Skip to main content

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};