Skip to main content

cloudreve_api/
lib.rs

1//! A Rust library for interacting with Cloudreve API
2//!
3//! This library provides asynchronous access to the Cloudreve API endpoints.
4//! It handles authentication, request building, and response parsing.
5//!
6//! # Examples
7//!
8//! ## Using CloudreveAPI (recommended)
9//!
10//! ```no_run
11//! use cloudreve_api::{CloudreveAPI, Result};
12//!
13//! #[tokio::main]
14//! async fn main() -> Result<()> {
15//!     // Auto-detect version
16//!     let mut api = CloudreveAPI::new("https://your-cloudreve-instance.com").await?;
17//!
18//!     // Login
19//!     api.login("user@example.com", "password").await?;
20//!
21//!     // List files
22//!     let files = api.list_files("/", None, None).await?;
23//!     println!("Found {} items", files.total_count());
24//!
25//!     Ok(())
26//! }
27//! ```
28
29pub mod api;
30pub mod client;
31pub mod cloudreve_api;
32pub mod error;
33
34pub(crate) fn ensure_tls_crypto_provider() {
35    let _ = rustls::crypto::ring::default_provider().install_default();
36}
37
38pub use api::v3::models::{
39    ApiResponse, Aria2CreateRequest, Aria2DownloadInfo, Aria2DownloadingTask, Aria2File,
40    Aria2FileUri, Aria2FinishedTask, CopyObjectRequest, CreateDirectoryRequest, CreateFileRequest,
41    DeleteObjectRequest, DirectoryList, DownloadUrl, FileSource, FileSourceRequest, LoginRequest,
42    MoveObjectRequest, Object, OtpLoginRequest, Policy, Property, RenameObjectRequest, Share,
43    ShareRequest, SiteConfig, SourceItems, StorageInfo, UploadFileRequest, UploadSession, User,
44    UserGroup, UserTask, UserTaskList, WebdavAccount,
45};
46pub use api::v4::models::*;
47
48// Main Cloudreve API client
49pub use cloudreve_api::{
50    CaptchaInfo, CloudreveAPI, DeleteFailure, DeleteResult, DeleteTarget, FileInfo, FileItem,
51    FileList, FileListAll, ItemFailure, LoginResponse, SearchHit, SiteConfigValue, TokenInfo,
52    TransferResult, UserInfo, V3LoginResponse, V4LoginResponse,
53};
54
55// Legacy exports for backward compatibility
56pub use api::v4::ApiV4Client as CloudreveClient;
57pub use client::UnifiedClient;
58
59// Re-export version-specific clients for advanced use cases
60pub use api::v3::ApiV3Client;
61pub use api::v4::ApiV4Client as ApiV4Client_;
62
63// Re-export API version types
64pub use api::{ApiVersion, VersionInfo};
65
66// Re-export error type
67pub use error::Error;
68
69/// A result type alias for convenience
70pub type Result<T> = std::result::Result<T, Error>;
71
72/// Cloudreve API library version
73pub const VERSION: &str = env!("CARGO_PKG_VERSION");