rust_cnb/
client.rs

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