rust_cnb/
client.rs

1//! API 客户端主入口
2
3use crate::error::{ApiError, Result};
4use reqwest::Client;
5use crate::pulls;
6use crate::users;
7use crate::repo_labels;
8use crate::build;
9use crate::git;
10use crate::repositories;
11use crate::assets;
12use crate::issues;
13use crate::organizations;
14use crate::followers;
15use crate::repo_contributor;
16use crate::releases;
17use crate::starring;
18use crate::artifactory;
19use crate::workspace;
20use crate::contributors;
21use crate::knowledge_base;
22use crate::git_settings;
23use crate::missions;
24use crate::activities;
25use crate::collaborators;
26use crate::ai;
27
28/// API 客户端
29pub struct ApiClient {
30    base_url: String,
31    client: Client,
32    pulls: pulls::PullsClient,
33    users: users::UsersClient,
34    repo_labels: repo_labels::RepoLabelsClient,
35    build: build::BuildClient,
36    git: git::GitClient,
37    repositories: repositories::RepositoriesClient,
38    assets: assets::AssetsClient,
39    issues: issues::IssuesClient,
40    organizations: organizations::OrganizationsClient,
41    followers: followers::FollowersClient,
42    repo_contributor: repo_contributor::RepoContributorClient,
43    releases: releases::ReleasesClient,
44    starring: starring::StarringClient,
45    artifactory: artifactory::ArtifactoryClient,
46    workspace: workspace::WorkspaceClient,
47    contributors: contributors::ContributorsClient,
48    knowledge_base: knowledge_base::KnowledgeBaseClient,
49    git_settings: git_settings::GitSettingsClient,
50    missions: missions::MissionsClient,
51    activities: activities::ActivitiesClient,
52    collaborators: collaborators::CollaboratorsClient,
53    ai: ai::AiClient,
54}
55
56impl ApiClient {
57    /// 创建新的 API 客户端
58    pub fn new(base_url: String) -> Self {
59        let client = Client::new();
60        Self {
61            pulls: pulls::PullsClient::new(base_url.clone(), client.clone()),
62            users: users::UsersClient::new(base_url.clone(), client.clone()),
63            repo_labels: repo_labels::RepoLabelsClient::new(base_url.clone(), client.clone()),
64            build: build::BuildClient::new(base_url.clone(), client.clone()),
65            git: git::GitClient::new(base_url.clone(), client.clone()),
66            repositories: repositories::RepositoriesClient::new(base_url.clone(), client.clone()),
67            assets: assets::AssetsClient::new(base_url.clone(), client.clone()),
68            issues: issues::IssuesClient::new(base_url.clone(), client.clone()),
69            organizations: organizations::OrganizationsClient::new(base_url.clone(), client.clone()),
70            followers: followers::FollowersClient::new(base_url.clone(), client.clone()),
71            repo_contributor: repo_contributor::RepoContributorClient::new(base_url.clone(), client.clone()),
72            releases: releases::ReleasesClient::new(base_url.clone(), client.clone()),
73            starring: starring::StarringClient::new(base_url.clone(), client.clone()),
74            artifactory: artifactory::ArtifactoryClient::new(base_url.clone(), client.clone()),
75            workspace: workspace::WorkspaceClient::new(base_url.clone(), client.clone()),
76            contributors: contributors::ContributorsClient::new(base_url.clone(), client.clone()),
77            knowledge_base: knowledge_base::KnowledgeBaseClient::new(base_url.clone(), client.clone()),
78            git_settings: git_settings::GitSettingsClient::new(base_url.clone(), client.clone()),
79            missions: missions::MissionsClient::new(base_url.clone(), client.clone()),
80            activities: activities::ActivitiesClient::new(base_url.clone(), client.clone()),
81            collaborators: collaborators::CollaboratorsClient::new(base_url.clone(), client.clone()),
82            ai: ai::AiClient::new(base_url.clone(), client.clone()),
83            base_url,
84            client,
85        }
86    }
87
88    /// 设置认证信息
89    pub fn with_auth(self, token: &str) -> Self {
90        // 这里可以扩展认证逻辑
91        self
92    }
93
94    /// 获取 Pulls 相关的 API 客户端
95    pub fn pulls(&self) -> &pulls::PullsClient {
96        &self.pulls
97    }
98    /// 获取 Users 相关的 API 客户端
99    pub fn users(&self) -> &users::UsersClient {
100        &self.users
101    }
102    /// 获取 RepoLabels 相关的 API 客户端
103    pub fn repo_labels(&self) -> &repo_labels::RepoLabelsClient {
104        &self.repo_labels
105    }
106    /// 获取 Build 相关的 API 客户端
107    pub fn build(&self) -> &build::BuildClient {
108        &self.build
109    }
110    /// 获取 Git 相关的 API 客户端
111    pub fn git(&self) -> &git::GitClient {
112        &self.git
113    }
114    /// 获取 Repositories 相关的 API 客户端
115    pub fn repositories(&self) -> &repositories::RepositoriesClient {
116        &self.repositories
117    }
118    /// 获取 Assets 相关的 API 客户端
119    pub fn assets(&self) -> &assets::AssetsClient {
120        &self.assets
121    }
122    /// 获取 Issues 相关的 API 客户端
123    pub fn issues(&self) -> &issues::IssuesClient {
124        &self.issues
125    }
126    /// 获取 Organizations 相关的 API 客户端
127    pub fn organizations(&self) -> &organizations::OrganizationsClient {
128        &self.organizations
129    }
130    /// 获取 Followers 相关的 API 客户端
131    pub fn followers(&self) -> &followers::FollowersClient {
132        &self.followers
133    }
134    /// 获取 RepoContributor 相关的 API 客户端
135    pub fn repo_contributor(&self) -> &repo_contributor::RepoContributorClient {
136        &self.repo_contributor
137    }
138    /// 获取 Releases 相关的 API 客户端
139    pub fn releases(&self) -> &releases::ReleasesClient {
140        &self.releases
141    }
142    /// 获取 Starring 相关的 API 客户端
143    pub fn starring(&self) -> &starring::StarringClient {
144        &self.starring
145    }
146    /// 获取 Artifactory 相关的 API 客户端
147    pub fn artifactory(&self) -> &artifactory::ArtifactoryClient {
148        &self.artifactory
149    }
150    /// 获取 Workspace 相关的 API 客户端
151    pub fn workspace(&self) -> &workspace::WorkspaceClient {
152        &self.workspace
153    }
154    /// 获取 Contributors 相关的 API 客户端
155    pub fn contributors(&self) -> &contributors::ContributorsClient {
156        &self.contributors
157    }
158    /// 获取 KnowledgeBase 相关的 API 客户端
159    pub fn knowledge_base(&self) -> &knowledge_base::KnowledgeBaseClient {
160        &self.knowledge_base
161    }
162    /// 获取 GitSettings 相关的 API 客户端
163    pub fn git_settings(&self) -> &git_settings::GitSettingsClient {
164        &self.git_settings
165    }
166    /// 获取 Missions 相关的 API 客户端
167    pub fn missions(&self) -> &missions::MissionsClient {
168        &self.missions
169    }
170    /// 获取 Activities 相关的 API 客户端
171    pub fn activities(&self) -> &activities::ActivitiesClient {
172        &self.activities
173    }
174    /// 获取 Collaborators 相关的 API 客户端
175    pub fn collaborators(&self) -> &collaborators::CollaboratorsClient {
176        &self.collaborators
177    }
178    /// 获取 Ai 相关的 API 客户端
179    pub fn ai(&self) -> &ai::AiClient {
180        &self.ai
181    }
182}