Skip to main content

gitea_sdk_rs/
lib.rs

1// Copyright 2026 infinitete. All rights reserved.
2// Use of this source code is governed by a MIT-style
3// license that can be found in the LICENSE file.
4
5//! Gitea API client for Rust.
6//!
7//! This crate provides an asynchronous client for the Gitea API.
8//!
9//! # Quick Start
10//!
11//! ```no_run
12//! use gitea_sdk_rs::Client;
13//!
14//! # fn main() -> Result<(), gitea_sdk_rs::Error> {
15//! let client = Client::builder("https://gitea.example.com")
16//!     .token("your-token")
17//!     .build()?;
18//! # let _ = client;
19//! # Ok(())
20//! # }
21//! ```
22
23// Re-export serde macros for convenience.
24pub use serde::{Deserialize, Serialize};
25
26mod client;
27mod error;
28mod internal;
29mod pagination;
30mod response;
31mod version;
32
33pub mod auth;
34
35pub mod api;
36pub mod options;
37pub mod types;
38
39// Public API re-exports.
40pub use client::{Client, ClientBuilder};
41pub use error::{Error, Result};
42pub use pagination::{ListOptions, QueryEncode};
43pub use response::{PageLinks, Response};
44
45// Re-export entity types for convenience.
46pub use types::{
47    AccessToken, ActionTask, ActionTaskResponse, ActionWorkflowJob, ActionWorkflowJobsResponse,
48    ActionWorkflowRun, ActionWorkflowRunsResponse, ActionWorkflowStep, Activity, AnnotatedTag,
49    AnnotatedTagObject, Attachment, Badge, Branch, BranchProtection, ChangedFile,
50    CollaboratorPermissionResult, CombinedStatus, Comment, Commit, CommitAffectedFiles,
51    CommitDateOptions, CommitMeta, CommitStats, CommitUser, Compare, ContentsExtResponse,
52    ContentsResponse, CronTask, DeployKey, Email, ExternalTracker, ExternalWiki,
53    FileCommitResponse, FileLinksResponse, FileResponse, GPGKey, GPGKeyEmail, GitBlobResponse,
54    GitEntry, GitHook, GitObject, GitTreeResponse, GitignoreTemplateInfo, GlobalAPISettings,
55    GlobalAttachmentSettings, GlobalRepoSettings, GlobalUISettings, Hook, Identity,
56    InternalTracker, Issue, IssueBlockedBy, IssueFormElement, IssueFormElementAttributes,
57    IssueFormElementValidations, IssueMeta, IssueTemplate, Label, LabelTemplate,
58    LicenseTemplateInfo, LicensesTemplateListEntry, Milestone, NodeInfo, NodeInfoServices,
59    NodeInfoSoftware, NodeInfoUsage, NodeInfoUsageUsers, Note, NotificationThread, NotifySubject,
60    Oauth2, OrgPermissions, Organization, PRBranchInfo, PRBranchInfoRepo, Package, PackageFile,
61    PayloadCommit, PayloadCommitVerification, PayloadUser, Permission, PublicKey, PullRequest,
62    PullRequestMeta, PullReview, PullReviewComment, PushMirrorResponse, Reaction, Reference,
63    Release, RepoActionVariable, RepoTransfer, Repository, RepositoryMeta, Secret, Status,
64    StopWatch, Tag, TagProtection, Team, TimelineComment, TrackedTime, User, UserHeatmapData,
65    UserSettings, WatchInfo, WikiCommit, WikiCommitList, WikiPage, WikiPageMetaData,
66};
67
68// Re-export all enums for convenience.
69pub use types::enums::*;
70
71// Re-export API sub-structs for convenience.
72pub use api::{
73    ActionsApi, ActivityPubApi, AdminApi, HooksApi, IssuesApi, MiscApi, NotificationsApi,
74    Oauth2Api, OrgsApi, PackagesApi, PullsApi, ReleasesApi, ReposApi, SettingsApi, StatusApi,
75    UsersApi,
76};
77
78#[cfg(test)]
79mod tests {
80    #[test]
81    fn test_public_api_accessible() {
82        let _: fn() -> crate::Client = || unimplemented!();
83        let _: fn() -> crate::ClientBuilder<'static> = || unimplemented!();
84        let _: fn() -> crate::Error = || unimplemented!();
85        let _: fn() -> crate::Result<String> = || unimplemented!();
86        let _: fn() -> crate::Response = || unimplemented!();
87        let _: fn() -> crate::PageLinks = || unimplemented!();
88        let _: fn() -> crate::ListOptions = || unimplemented!();
89    }
90
91    #[test]
92    fn test_public_types_accessible() {
93        let _: fn() -> crate::User = || unimplemented!();
94        let _: fn() -> crate::Label = || unimplemented!();
95        let _: fn() -> crate::Milestone = || unimplemented!();
96        let _: fn() -> crate::Organization = || unimplemented!();
97        let _: fn() -> crate::Team = || unimplemented!();
98        let _: fn() -> crate::Release = || unimplemented!();
99        let _: fn() -> crate::Comment = || unimplemented!();
100        let _: fn() -> crate::Status = || unimplemented!();
101        let _: fn() -> crate::StateType = || unimplemented!();
102        let _: fn() -> crate::ReposApi<'static> = || unimplemented!();
103        let _: fn() -> crate::IssuesApi<'static> = || unimplemented!();
104    }
105}