baidu_netdisk_sdk/lib.rs
1//! Baidu NetDisk Rust SDK
2//!
3//! A Rust SDK for Baidu NetDisk API, providing file management,
4//! upload/download and other functionalities.
5//!
6//! ## Features
7//!
8//! - API coverage: file management, upload/download, media processing, etc.
9//! - Elegant error handling: layered error types for easy caller handling
10//! - High performance: supports parallel upload and resumable upload
11//! - Thread safety: uses RwLock for concurrent safety
12//! - Configurable: flexible client configuration via Builder pattern
13//!
14//! ## Quick Start
15//!
16//! ```no_run
17//! use baidu_netdisk_sdk::BaiduNetDiskClient;
18//!
19//! #[tokio::main]
20//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
21//! let client = BaiduNetDiskClient::builder()
22//! .app_key("your_app_key")
23//! .app_secret("your_app_secret")
24//! .build()?;
25//!
26//! // Device code authorization
27//! let device_code = client.authorize().get_device_code().await?;
28//! println!("Please visit: {}", device_code.verification_url);
29//!
30//! // Poll for access token
31//! let token = loop {
32//! match client.authorize().request_access_token(&device_code).await? {
33//! Some(t) => break t,
34//! None => tokio::time::sleep(std::time::Duration::from_secs(device_code.interval as u64)).await,
35//! }
36//! };
37//! println!("Token acquired: {}", token.access_token);
38//!
39//! Ok(())
40//! }
41//! ```
42
43pub mod auth;
44pub mod client;
45pub mod download;
46pub mod errors;
47pub mod file;
48pub mod http;
49pub mod playlist;
50pub mod quota;
51pub mod upload;
52pub mod user;
53
54pub use crate::auth::{AccessToken, DeviceCode, QuotaInfo, TokenStatus, UserInfo};
55pub use crate::client::{BaiduNetDiskClient, TokenScopedClient};
56pub use crate::download::DownloadClient;
57pub use crate::errors::{NetDiskError, NetDiskResult};
58pub use crate::file::{
59 BtListOptions, Category, CategoryCountOptions, CategorySearchOptions, DocumentListOptions,
60 FileClient, FileInfo, FileMeta, FolderCreateOptions, FolderInfo, ImageListOptions,
61 ListAllOptions, ListOptions, SearchOptions, SemanticSearchOptions, VideoListOptions,
62};
63pub use crate::playlist::{
64 MediaFile, MediaFileEntry, MediaInfo, MediaPlayInfo, MediaStream, PlaylistClient,
65 PlaylistFileInfo, PlaylistFileList, PlaylistInfo, PlaylistList,
66};
67pub use crate::quota::CapacityInfo;
68pub use crate::upload::{
69 CreateFileOptions, CreateFileResponse, LocateUploadResponse, LocateUploadServer,
70 PrecreateOptions, PrecreateResponse, SimpleUploadOptions, UploadChunkOptions,
71 UploadChunkResponse, UploadClient,
72};