use crate::error::{ApiError, Result};
use reqwest::Client;
use crate::git_settings;
use crate::pulls;
use crate::git;
use crate::event;
use crate::build;
use crate::repo_labels;
use crate::assets;
use crate::users;
use crate::releases;
use crate::organizations;
use crate::workspace;
use crate::missions;
use crate::repositories;
use crate::knowledge_base;
use crate::wiki;
use crate::followers;
use crate::starring;
use crate::issues;
use crate::activities;
use crate::ai;
use crate::badge;
use crate::security;
use crate::artifactory;
pub struct ApiClient {
base_url: String,
client: Client,
git_settings: git_settings::GitSettingsClient,
pulls: pulls::PullsClient,
git: git::GitClient,
event: event::EventClient,
build: build::BuildClient,
repo_labels: repo_labels::RepoLabelsClient,
assets: assets::AssetsClient,
users: users::UsersClient,
releases: releases::ReleasesClient,
organizations: organizations::OrganizationsClient,
workspace: workspace::WorkspaceClient,
missions: missions::MissionsClient,
repositories: repositories::RepositoriesClient,
knowledge_base: knowledge_base::KnowledgeBaseClient,
wiki: wiki::WikiClient,
followers: followers::FollowersClient,
starring: starring::StarringClient,
issues: issues::IssuesClient,
activities: activities::ActivitiesClient,
ai: ai::AiClient,
badge: badge::BadgeClient,
security: security::SecurityClient,
artifactory: artifactory::ArtifactoryClient,
}
impl ApiClient {
pub fn new(base_url: String) -> Self {
let client = Client::new();
Self {
git_settings: git_settings::GitSettingsClient::new(base_url.clone(), client.clone()),
pulls: pulls::PullsClient::new(base_url.clone(), client.clone()),
git: git::GitClient::new(base_url.clone(), client.clone()),
event: event::EventClient::new(base_url.clone(), client.clone()),
build: build::BuildClient::new(base_url.clone(), client.clone()),
repo_labels: repo_labels::RepoLabelsClient::new(base_url.clone(), client.clone()),
assets: assets::AssetsClient::new(base_url.clone(), client.clone()),
users: users::UsersClient::new(base_url.clone(), client.clone()),
releases: releases::ReleasesClient::new(base_url.clone(), client.clone()),
organizations: organizations::OrganizationsClient::new(base_url.clone(), client.clone()),
workspace: workspace::WorkspaceClient::new(base_url.clone(), client.clone()),
missions: missions::MissionsClient::new(base_url.clone(), client.clone()),
repositories: repositories::RepositoriesClient::new(base_url.clone(), client.clone()),
knowledge_base: knowledge_base::KnowledgeBaseClient::new(base_url.clone(), client.clone()),
wiki: wiki::WikiClient::new(base_url.clone(), client.clone()),
followers: followers::FollowersClient::new(base_url.clone(), client.clone()),
starring: starring::StarringClient::new(base_url.clone(), client.clone()),
issues: issues::IssuesClient::new(base_url.clone(), client.clone()),
activities: activities::ActivitiesClient::new(base_url.clone(), client.clone()),
ai: ai::AiClient::new(base_url.clone(), client.clone()),
badge: badge::BadgeClient::new(base_url.clone(), client.clone()),
security: security::SecurityClient::new(base_url.clone(), client.clone()),
artifactory: artifactory::ArtifactoryClient::new(base_url.clone(), client.clone()),
base_url,
client,
}
}
pub fn with_auth(self, token: &str) -> Self {
self
}
pub fn git_settings(&self) -> &git_settings::GitSettingsClient {
&self.git_settings
}
pub fn pulls(&self) -> &pulls::PullsClient {
&self.pulls
}
pub fn git(&self) -> &git::GitClient {
&self.git
}
pub fn event(&self) -> &event::EventClient {
&self.event
}
pub fn build(&self) -> &build::BuildClient {
&self.build
}
pub fn repo_labels(&self) -> &repo_labels::RepoLabelsClient {
&self.repo_labels
}
pub fn assets(&self) -> &assets::AssetsClient {
&self.assets
}
pub fn users(&self) -> &users::UsersClient {
&self.users
}
pub fn releases(&self) -> &releases::ReleasesClient {
&self.releases
}
pub fn organizations(&self) -> &organizations::OrganizationsClient {
&self.organizations
}
pub fn workspace(&self) -> &workspace::WorkspaceClient {
&self.workspace
}
pub fn missions(&self) -> &missions::MissionsClient {
&self.missions
}
pub fn repositories(&self) -> &repositories::RepositoriesClient {
&self.repositories
}
pub fn knowledge_base(&self) -> &knowledge_base::KnowledgeBaseClient {
&self.knowledge_base
}
pub fn wiki(&self) -> &wiki::WikiClient {
&self.wiki
}
pub fn followers(&self) -> &followers::FollowersClient {
&self.followers
}
pub fn starring(&self) -> &starring::StarringClient {
&self.starring
}
pub fn issues(&self) -> &issues::IssuesClient {
&self.issues
}
pub fn activities(&self) -> &activities::ActivitiesClient {
&self.activities
}
pub fn ai(&self) -> &ai::AiClient {
&self.ai
}
pub fn badge(&self) -> &badge::BadgeClient {
&self.badge
}
pub fn security(&self) -> &security::SecurityClient {
&self.security
}
pub fn artifactory(&self) -> &artifactory::ArtifactoryClient {
&self.artifactory
}
}