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 use api::v3::models::{
35 ApiResponse, Aria2CreateRequest, Aria2Task, CopyObjectRequest, CreateDirectoryRequest,
36 CreateFileRequest, DeleteObjectRequest, DirectoryList, DownloadUrl, FileSource,
37 FileSourceRequest, LoginRequest, MoveObjectRequest, Object, OtpLoginRequest, Policy, Property,
38 RenameObjectRequest, Share, ShareRequest, SiteConfig, SourceItems, StorageInfo,
39 UploadFileRequest, UploadSession, User, UserGroup, WebdavAccount,
40};
41pub use api::v4::models::*;
42
43// Main Cloudreve API client
44pub use cloudreve_api::{
45 CaptchaInfo, CloudreveAPI, DeleteResult, DeleteTarget, FileInfo, FileItem, FileList,
46 FileListAll, LoginResponse, SiteConfigValue, TokenInfo, UserInfo, V3LoginResponse,
47 V4LoginResponse,
48};
49
50// Legacy exports for backward compatibility
51pub use api::v4::ApiV4Client as CloudreveClient;
52pub use client::UnifiedClient;
53
54// Re-export version-specific clients for advanced use cases
55pub use api::v3::ApiV3Client;
56pub use api::v4::ApiV4Client as ApiV4Client_;
57
58// Re-export API version types
59pub use api::{ApiVersion, VersionInfo};
60
61// Re-export error type
62pub use error::Error;
63
64/// A result type alias for convenience
65pub type Result<T> = std::result::Result<T, Error>;
66
67/// Cloudreve API library version
68pub const VERSION: &str = env!("CARGO_PKG_VERSION");