2022-11-27 12:16:45 +01:00

842 lines
25 KiB
Rust

use std::sync::Arc;
use async_trait::async_trait;
use gitea_raw_client::{apis::Error, models};
pub use gitea_raw_client::apis::repository_api::*;
#[async_trait]
pub trait Repository {
async fn accept_transfer(
&self,
owner: &str,
repo: &str,
) -> Result<models::Repository, Error<AcceptRepoTransferError>>;
async fn create_current_user_repo(
&self,
body: Option<models::CreateRepoOption>,
) -> Result<models::Repository, Error<CreateCurrentUserRepoError>>;
async fn create_fork(
&self,
owner: &str,
repo: &str,
body: Option<models::CreateForkOption>,
) -> Result<models::Repository, Error<CreateForkError>>;
async fn generate_repo(
&self,
template_owner: &str,
template_repo: &str,
body: Option<models::GenerateRepoOption>,
) -> Result<models::Repository, Error<GenerateRepoError>>;
async fn get_annotated_tag(
&self,
owner: &str,
repo: &str,
sha: &str,
) -> Result<models::AnnotatedTag, Error<GetAnnotatedTagError>>;
async fn get_blob(
&self,
owner: &str,
repo: &str,
sha: &str,
) -> Result<models::GitBlobResponse, Error<GetBlobError>>;
async fn get_tree(
&self,
owner: &str,
repo: &str,
sha: &str,
recursive: Option<bool>,
page: Option<i32>,
per_page: Option<i32>,
) -> Result<models::GitTreeResponse, Error<GetTreeError>>;
async fn list_forks(
&self,
owner: &str,
repo: &str,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::Repository>, Error<ListForksError>>;
async fn reject_transfer(
&self,
owner: &str,
repo: &str,
) -> Result<models::Repository, Error<RejectRepoTransferError>>;
async fn add_collaborator(
&self,
owner: &str,
repo: &str,
collaborator: &str,
body: Option<models::AddCollaboratorOption>,
) -> Result<(), Error<RepoAddCollaboratorError>>;
async fn add_team(
&self,
owner: &str,
repo: &str,
team: &str,
) -> Result<(), Error<RepoAddTeamError>>;
async fn add_topic(
&self,
owner: &str,
repo: &str,
topic: &str,
) -> Result<(), Error<RepoAddTopicError>>;
async fn apply_diff_patch(
&self,
owner: &str,
repo: &str,
body: models::UpdateFileOptions,
) -> Result<models::FileResponse, Error<RepoApplyDiffPatchError>>;
async fn cancel_scheduled_auto_merge(
&self,
owner: &str,
repo: &str,
index: i64,
) -> Result<(), Error<RepoCancelScheduledAutoMergeError>>;
async fn check_collaborator(
&self,
owner: &str,
repo: &str,
collaborator: &str,
) -> Result<(), Error<RepoCheckCollaboratorError>>;
async fn check_team(
&self,
owner: &str,
repo: &str,
team: &str,
) -> Result<models::Team, Error<RepoCheckTeamError>>;
async fn create_branch(
&self,
owner: &str,
repo: &str,
body: Option<models::CreateBranchRepoOption>,
) -> Result<models::Branch, Error<RepoCreateBranchError>>;
async fn create_branch_protection(
&self,
owner: &str,
repo: &str,
body: Option<models::CreateBranchProtectionOption>,
) -> Result<models::BranchProtection, Error<RepoCreateBranchProtectionError>>;
async fn create_file(
&self,
owner: &str,
repo: &str,
filepath: &str,
body: models::CreateFileOptions,
) -> Result<models::FileResponse, Error<RepoCreateFileError>>;
async fn create_hook(
&self,
owner: &str,
repo: &str,
body: Option<models::CreateHookOption>,
) -> Result<models::Hook, Error<RepoCreateHookError>>;
async fn create_key(
&self,
owner: &str,
repo: &str,
body: Option<models::CreateKeyOption>,
) -> Result<models::DeployKey, Error<RepoCreateKeyError>>;
async fn create_pull_request(
&self,
owner: &str,
repo: &str,
body: Option<models::CreatePullRequestOption>,
) -> Result<models::PullRequest, Error<RepoCreatePullRequestError>>;
async fn create_pull_review(
&self,
owner: &str,
repo: &str,
index: i64,
body: models::CreatePullReviewOptions,
) -> Result<models::PullReview, Error<RepoCreatePullReviewError>>;
async fn create_pull_review_requests(
&self,
owner: &str,
repo: &str,
index: i64,
body: models::PullReviewRequestOptions,
) -> Result<Vec<models::PullReview>, Error<RepoCreatePullReviewRequestsError>>;
async fn create_release(
&self,
owner: &str,
repo: &str,
body: Option<models::CreateReleaseOption>,
) -> Result<models::Release, Error<RepoCreateReleaseError>>;
async fn create_release_attachment(
&self,
owner: &str,
repo: &str,
id: i64,
attachment: std::path::PathBuf,
name: Option<&str>,
) -> Result<models::Attachment, Error<RepoCreateReleaseAttachmentError>>;
async fn create_status(
&self,
owner: &str,
repo: &str,
sha: &str,
body: Option<models::CreateStatusOption>,
) -> Result<models::CommitStatus, Error<RepoCreateStatusError>>;
async fn create_tag(
&self,
owner: &str,
repo: &str,
body: Option<models::CreateTagOption>,
) -> Result<models::Tag, Error<RepoCreateTagError>>;
async fn create_wiki_page(
&self,
owner: &str,
repo: &str,
body: Option<models::CreateWikiPageOptions>,
) -> Result<models::WikiPage, Error<RepoCreateWikiPageError>>;
async fn delete(&self, owner: &str, repo: &str) -> Result<(), Error<RepoDeleteError>>;
async fn delete_branch(
&self,
owner: &str,
repo: &str,
branch: &str,
) -> Result<(), Error<RepoDeleteBranchError>>;
async fn delete_branch_protection(
&self,
owner: &str,
repo: &str,
name: &str,
) -> Result<(), Error<RepoDeleteBranchProtectionError>>;
async fn delete_collaborator(
&self,
owner: &str,
repo: &str,
collaborator: &str,
) -> Result<(), Error<RepoDeleteCollaboratorError>>;
async fn delete_file(
&self,
owner: &str,
repo: &str,
filepath: &str,
body: models::DeleteFileOptions,
) -> Result<models::FileDeleteResponse, Error<RepoDeleteFileError>>;
async fn delete_git_hook(
&self,
owner: &str,
repo: &str,
id: &str,
) -> Result<(), Error<RepoDeleteGitHookError>>;
async fn delete_hook(
&self,
owner: &str,
repo: &str,
id: i64,
) -> Result<(), Error<RepoDeleteHookError>>;
async fn delete_key(
&self,
owner: &str,
repo: &str,
id: i64,
) -> Result<(), Error<RepoDeleteKeyError>>;
async fn delete_pull_review(
&self,
owner: &str,
repo: &str,
index: i64,
id: i64,
) -> Result<(), Error<RepoDeletePullReviewError>>;
async fn delete_pull_review_requests(
&self,
owner: &str,
repo: &str,
index: i64,
body: models::PullReviewRequestOptions,
) -> Result<(), Error<RepoDeletePullReviewRequestsError>>;
async fn delete_release(
&self,
owner: &str,
repo: &str,
id: i64,
) -> Result<(), Error<RepoDeleteReleaseError>>;
async fn delete_release_attachment(
&self,
owner: &str,
repo: &str,
id: i64,
attachment_id: i64,
) -> Result<(), Error<RepoDeleteReleaseAttachmentError>>;
async fn delete_release_by_tag(
&self,
owner: &str,
repo: &str,
tag: &str,
) -> Result<(), Error<RepoDeleteReleaseByTagError>>;
async fn delete_tag(
&self,
owner: &str,
repo: &str,
tag: &str,
) -> Result<(), Error<RepoDeleteTagError>>;
async fn delete_team(
&self,
owner: &str,
repo: &str,
team: &str,
) -> Result<(), Error<RepoDeleteTeamError>>;
async fn delete_topic(
&self,
owner: &str,
repo: &str,
topic: &str,
) -> Result<(), Error<RepoDeleteTopicError>>;
async fn delete_wiki_page(
&self,
owner: &str,
repo: &str,
page_name: &str,
) -> Result<(), Error<RepoDeleteWikiPageError>>;
async fn dismiss_pull_review(
&self,
owner: &str,
repo: &str,
index: i64,
id: i64,
body: models::DismissPullReviewOptions,
) -> Result<models::PullReview, Error<RepoDismissPullReviewError>>;
async fn download_commit_diff_or_patch(
&self,
owner: &str,
repo: &str,
sha: &str,
diff_type: &str,
) -> Result<String, Error<RepoDownloadCommitDiffOrPatchError>>;
async fn download_pull_diff_or_patch(
&self,
owner: &str,
repo: &str,
index: i64,
diff_type: &str,
binary: Option<bool>,
) -> Result<String, Error<RepoDownloadPullDiffOrPatchError>>;
async fn edit(
&self,
owner: &str,
repo: &str,
body: Option<models::EditRepoOption>,
) -> Result<models::Repository, Error<RepoEditError>>;
async fn edit_branch_protection(
&self,
owner: &str,
repo: &str,
name: &str,
body: Option<models::EditBranchProtectionOption>,
) -> Result<models::BranchProtection, Error<RepoEditBranchProtectionError>>;
async fn edit_git_hook(
&self,
owner: &str,
repo: &str,
id: &str,
body: Option<models::EditGitHookOption>,
) -> Result<models::GitHook, Error<RepoEditGitHookError>>;
async fn edit_hook(
&self,
owner: &str,
repo: &str,
id: i64,
body: Option<models::EditHookOption>,
) -> Result<models::Hook, Error<RepoEditHookError>>;
async fn edit_pull_request(
&self,
owner: &str,
repo: &str,
index: i64,
body: Option<models::EditPullRequestOption>,
) -> Result<models::PullRequest, Error<RepoEditPullRequestError>>;
async fn edit_release(
&self,
owner: &str,
repo: &str,
id: i64,
body: Option<models::EditReleaseOption>,
) -> Result<models::Release, Error<RepoEditReleaseError>>;
async fn edit_release_attachment(
&self,
owner: &str,
repo: &str,
id: i64,
attachment_id: i64,
body: Option<models::EditAttachmentOptions>,
) -> Result<models::Attachment, Error<RepoEditReleaseAttachmentError>>;
async fn edit_wiki_page(
&self,
owner: &str,
repo: &str,
page_name: &str,
body: Option<models::CreateWikiPageOptions>,
) -> Result<models::WikiPage, Error<RepoEditWikiPageError>>;
async fn get(&self, owner: &str, repo: &str)
-> Result<models::Repository, Error<RepoGetError>>;
async fn get_all_commits(
&self,
owner: &str,
repo: &str,
sha: Option<&str>,
path: Option<&str>,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::Commit>, Error<RepoGetAllCommitsError>>;
async fn get_archive(
&self,
owner: &str,
repo: &str,
archive: &str,
) -> Result<(), Error<RepoGetArchiveError>>;
async fn get_assignees(
&self,
owner: &str,
repo: &str,
) -> Result<Vec<models::User>, Error<RepoGetAssigneesError>>;
async fn get_branch(
&self,
owner: &str,
repo: &str,
branch: &str,
) -> Result<models::Branch, Error<RepoGetBranchError>>;
async fn get_branch_protection(
&self,
owner: &str,
repo: &str,
name: &str,
) -> Result<models::BranchProtection, Error<RepoGetBranchProtectionError>>;
async fn get_by_id(&self, id: i64) -> Result<models::Repository, Error<RepoGetByIdError>>;
async fn get_combined_status_by_ref(
&self,
owner: &str,
repo: &str,
r#ref: &str,
page: Option<i32>,
limit: Option<i32>,
) -> Result<models::CombinedStatus, Error<RepoGetCombinedStatusByRefError>>;
async fn get_contents(
&self,
owner: &str,
repo: &str,
filepath: &str,
r#ref: Option<&str>,
) -> Result<models::ContentsResponse, Error<RepoGetContentsError>>;
async fn get_contents_list(
&self,
owner: &str,
repo: &str,
r#ref: Option<&str>,
) -> Result<Vec<models::ContentsResponse>, Error<RepoGetContentsListError>>;
async fn get_editor_config(
&self,
owner: &str,
repo: &str,
filepath: &str,
r#ref: Option<&str>,
) -> Result<(), Error<RepoGetEditorConfigError>>;
async fn get_git_hook(
&self,
owner: &str,
repo: &str,
id: &str,
) -> Result<models::GitHook, Error<RepoGetGitHookError>>;
async fn get_hook(
&self,
owner: &str,
repo: &str,
id: i64,
) -> Result<models::Hook, Error<RepoGetHookError>>;
async fn get_issue_templates(
&self,
owner: &str,
repo: &str,
) -> Result<Vec<models::IssueTemplate>, Error<RepoGetIssueTemplatesError>>;
async fn get_key(
&self,
owner: &str,
repo: &str,
id: i64,
) -> Result<models::DeployKey, Error<RepoGetKeyError>>;
async fn get_languages(
&self,
owner: &str,
repo: &str,
) -> Result<::std::collections::HashMap<String, i64>, Error<RepoGetLanguagesError>>;
async fn get_note(
&self,
owner: &str,
repo: &str,
sha: &str,
) -> Result<models::Note, Error<RepoGetNoteError>>;
async fn get_pull_request(
&self,
owner: &str,
repo: &str,
index: i64,
) -> Result<models::PullRequest, Error<RepoGetPullRequestError>>;
async fn get_pull_request_commits(
&self,
owner: &str,
repo: &str,
index: i64,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::Commit>, Error<RepoGetPullRequestCommitsError>>;
async fn get_pull_review(
&self,
owner: &str,
repo: &str,
index: i64,
id: i64,
) -> Result<models::PullReview, Error<RepoGetPullReviewError>>;
async fn get_pull_review_comments(
&self,
owner: &str,
repo: &str,
index: i64,
id: i64,
) -> Result<Vec<models::PullReviewComment>, Error<RepoGetPullReviewCommentsError>>;
async fn get_raw_file(
&self,
owner: &str,
repo: &str,
filepath: &str,
r#ref: Option<&str>,
) -> Result<(), Error<RepoGetRawFileError>>;
async fn get_raw_file_or_lfs(
&self,
owner: &str,
repo: &str,
filepath: &str,
r#ref: Option<&str>,
) -> Result<(), Error<RepoGetRawFileOrLfsError>>;
async fn get_release(
&self,
owner: &str,
repo: &str,
id: i64,
) -> Result<models::Release, Error<RepoGetReleaseError>>;
async fn get_release_attachment(
&self,
owner: &str,
repo: &str,
id: i64,
attachment_id: i64,
) -> Result<models::Attachment, Error<RepoGetReleaseAttachmentError>>;
async fn get_release_by_tag(
&self,
owner: &str,
repo: &str,
tag: &str,
) -> Result<models::Release, Error<RepoGetReleaseByTagError>>;
async fn get_repo_permissions(
&self,
owner: &str,
repo: &str,
collaborator: &str,
) -> Result<models::RepoCollaboratorPermission, Error<RepoGetRepoPermissionsError>>;
async fn get_reviewers(
&self,
owner: &str,
repo: &str,
) -> Result<Vec<models::User>, Error<RepoGetReviewersError>>;
async fn get_single_commit(
&self,
owner: &str,
repo: &str,
sha: &str,
) -> Result<models::Commit, Error<RepoGetSingleCommitError>>;
async fn get_tag(
&self,
owner: &str,
repo: &str,
tag: &str,
) -> Result<models::Tag, Error<RepoGetTagError>>;
async fn get_wiki_page(
&self,
owner: &str,
repo: &str,
page_name: &str,
) -> Result<models::WikiPage, Error<RepoGetWikiPageError>>;
async fn get_wiki_page_revisions(
&self,
owner: &str,
repo: &str,
page_name: &str,
page: Option<i32>,
) -> Result<models::WikiCommitList, Error<RepoGetWikiPageRevisionsError>>;
async fn get_wiki_pages(
&self,
owner: &str,
repo: &str,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::WikiPageMetaData>, Error<RepoGetWikiPagesError>>;
async fn list_all_git_refs(
&self,
owner: &str,
repo: &str,
) -> Result<Vec<models::Reference>, Error<RepoListAllGitRefsError>>;
async fn list_branch_protection(
&self,
owner: &str,
repo: &str,
) -> Result<Vec<models::BranchProtection>, Error<RepoListBranchProtectionError>>;
async fn list_branches(
&self,
owner: &str,
repo: &str,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::Branch>, Error<RepoListBranchesError>>;
async fn list_collaborators(
&self,
owner: &str,
repo: &str,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::User>, Error<RepoListCollaboratorsError>>;
async fn list_git_hooks(
&self,
owner: &str,
repo: &str,
) -> Result<Vec<models::GitHook>, Error<RepoListGitHooksError>>;
async fn list_git_refs(
&self,
owner: &str,
repo: &str,
r#ref: &str,
) -> Result<Vec<models::Reference>, Error<RepoListGitRefsError>>;
async fn list_hooks(
&self,
owner: &str,
repo: &str,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::Hook>, Error<RepoListHooksError>>;
async fn list_keys(
&self,
owner: &str,
repo: &str,
key_id: Option<i32>,
fingerprint: Option<&str>,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::DeployKey>, Error<RepoListKeysError>>;
async fn list_pull_requests(
&self,
owner: &str,
repo: &str,
state: Option<&str>,
sort: Option<&str>,
milestone: Option<i64>,
labels: Option<Vec<i64>>,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::PullRequest>, Error<RepoListPullRequestsError>>;
async fn list_pull_reviews(
&self,
owner: &str,
repo: &str,
index: i64,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::PullReview>, Error<RepoListPullReviewsError>>;
async fn list_release_attachments(
&self,
owner: &str,
repo: &str,
id: i64,
) -> Result<Vec<models::Attachment>, Error<RepoListReleaseAttachmentsError>>;
async fn list_releases(
&self,
owner: &str,
repo: &str,
draft: Option<bool>,
pre_release: Option<bool>,
per_page: Option<i32>,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::Release>, Error<RepoListReleasesError>>;
async fn list_stargazers(
&self,
owner: &str,
repo: &str,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::User>, Error<RepoListStargazersError>>;
async fn list_statuses(
&self,
owner: &str,
repo: &str,
sha: &str,
sort: Option<&str>,
state: Option<&str>,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::CommitStatus>, Error<RepoListStatusesError>>;
async fn list_statuses_by_ref(
&self,
owner: &str,
repo: &str,
r#ref: &str,
sort: Option<&str>,
state: Option<&str>,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::CommitStatus>, Error<RepoListStatusesByRefError>>;
async fn list_subscribers(
&self,
owner: &str,
repo: &str,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::User>, Error<RepoListSubscribersError>>;
async fn list_tags(
&self,
owner: &str,
repo: &str,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::Tag>, Error<RepoListTagsError>>;
async fn list_teams(
&self,
owner: &str,
repo: &str,
) -> Result<Vec<models::Team>, Error<RepoListTeamsError>>;
async fn list_topics(
&self,
owner: &str,
repo: &str,
page: Option<i32>,
limit: Option<i32>,
) -> Result<models::TopicName, Error<RepoListTopicsError>>;
async fn merge_pull_request(
&self,
owner: &str,
repo: &str,
index: i64,
body: Option<models::MergePullRequestOption>,
) -> Result<(), Error<RepoMergePullRequestError>>;
async fn migrate(
&self,
body: Option<models::MigrateRepoOptions>,
) -> Result<models::Repository, Error<RepoMigrateError>>;
async fn mirror_sync(&self, owner: &str, repo: &str) -> Result<(), Error<RepoMirrorSyncError>>;
async fn pull_request_is_merged(
&self,
owner: &str,
repo: &str,
index: i64,
) -> Result<(), Error<RepoPullRequestIsMergedError>>;
async fn search(
&self,
q: Option<&str>,
topic: Option<bool>,
include_desc: Option<bool>,
uid: Option<i64>,
priority_owner_id: Option<i64>,
team_id: Option<i64>,
starred_by: Option<i64>,
private: Option<bool>,
is_private: Option<bool>,
template: Option<bool>,
archived: Option<bool>,
mode: Option<&str>,
exclusive: Option<bool>,
sort: Option<&str>,
order: Option<&str>,
page: Option<i32>,
limit: Option<i32>,
) -> Result<models::SearchResults, Error<RepoSearchError>>;
async fn signing_key(
&self,
owner: &str,
repo: &str,
) -> Result<String, Error<RepoSigningKeyError>>;
async fn submit_pull_review(
&self,
owner: &str,
repo: &str,
index: i64,
id: i64,
body: models::SubmitPullReviewOptions,
) -> Result<models::PullReview, Error<RepoSubmitPullReviewError>>;
async fn test_hook(
&self,
owner: &str,
repo: &str,
id: i64,
r#ref: Option<&str>,
) -> Result<(), Error<RepoTestHookError>>;
async fn tracked_times(
&self,
owner: &str,
repo: &str,
user: Option<&str>,
since: Option<String>,
before: Option<String>,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::TrackedTime>, Error<RepoTrackedTimesError>>;
async fn transfer(
&self,
owner: &str,
repo: &str,
body: models::TransferRepoOption,
) -> Result<models::Repository, Error<RepoTransferError>>;
async fn un_dismiss_pull_review(
&self,
owner: &str,
repo: &str,
index: i64,
id: i64,
) -> Result<models::PullReview, Error<RepoUnDismissPullReviewError>>;
async fn update_file(
&self,
owner: &str,
repo: &str,
filepath: &str,
body: models::UpdateFileOptions,
) -> Result<models::FileResponse, Error<RepoUpdateFileError>>;
async fn update_pull_request(
&self,
owner: &str,
repo: &str,
index: i64,
style: Option<&str>,
) -> Result<(), Error<RepoUpdatePullRequestError>>;
async fn update_topics(
&self,
owner: &str,
repo: &str,
body: Option<models::RepoTopicOptions>,
) -> Result<(), Error<RepoUpdateTopicsError>>;
async fn topic_search(
&self,
q: &str,
page: Option<i32>,
limit: Option<i32>,
) -> Result<Vec<models::TopicResponse>, Error<TopicSearchError>>;
async fn user_current_check_subscription(
&self,
owner: &str,
repo: &str,
) -> Result<models::WatchInfo, Error<UserCurrentCheckSubscriptionError>>;
async fn user_current_delete_subscription(
&self,
owner: &str,
repo: &str,
) -> Result<(), Error<UserCurrentDeleteSubscriptionError>>;
async fn user_current_put_subscription(
&self,
owner: &str,
repo: &str,
) -> Result<models::WatchInfo, Error<UserCurrentPutSubscriptionError>>;
async fn user_tracked_times(
&self,
owner: &str,
repo: &str,
user: &str,
) -> Result<Vec<models::TrackedTime>, Error<UserTrackedTimesError>>;
}
pub type DynRepository = Arc<dyn Repository + Send + Sync>;