Skip to main content

proton_drive_rs/
lib.rs

1//! High-level Proton Drive client (Rust port).
2//!
3//! Built on top of [`proton_sdk`]. Milestone 1 covers session-backed read
4//! operations: resolving the My Files folder, fetching node metadata and
5//! enumerating folder children.
6//!
7//! ```no_run
8//! # async fn run() -> proton_sdk::error::Result<()> {
9//! use proton_sdk::config::ProtonClientConfiguration;
10//! use proton_sdk::session::{PasswordMode, ProtonApiSession, ResumeParameters};
11//! use proton_drive_rs::ProtonDriveClient;
12//!
13//! let config = ProtonClientConfiguration::new("external-drive-myapp@0.1.0-alpha");
14//! let session = ProtonApiSession::resume(config, ResumeParameters {
15//!     session_id: "uid".into(),
16//!     username: "user@proton.me".into(),
17//!     user_id: "user-id".into(),
18//!     access_token: "access".into(),
19//!     refresh_token: "refresh".into(),
20//!     scopes: vec![],
21//!     is_waiting_for_second_factor_code: false,
22//!     password_mode: PasswordMode::Single,
23//! })?;
24//!
25//! let drive = ProtonDriveClient::new(&session, b"mailbox-password".to_vec());
26//! let root = drive.get_my_files_folder().await?;
27//! let child_uids = drive.enumerate_folder_children_node_uids(&root.uid).await?;
28//! for child in drive.enumerate_nodes(&child_uids).await? {
29//!     println!("{} ({:?})", child.name, child.kind);
30//! }
31//! # Ok(())
32//! # }
33//! ```
34#![forbid(unsafe_code)]
35
36mod cache;
37mod client;
38mod crypto;
39mod devices;
40mod dtos;
41mod events;
42mod node;
43mod photos;
44mod sharing;
45
46pub use cache::{CachedNodeInfo, DriveEntityCache};
47pub use client::ProtonDriveClient;
48pub use devices::{Device, DeviceType};
49pub use events::{DriveEvent, DriveEventScopeId};
50pub use node::{Node, NodeKind, RevisionState, Thumbnail, ThumbnailType};
51pub use photos::{PhotoTag, PhotoUploadMetadata, PhotosTimelineItem, ProtonPhotosClient};
52pub use proton_sdk::account::KeySalt;
53pub use proton_sdk::cache::{CacheRepository, EncryptedCacheRepository, InMemoryCacheRepository};
54pub use sharing::{
55    Bookmark, ExternalInvitation, ExternalInvitationState, IncomingInvitation, MemberRole,
56    PublicLink, ShareInvitation, ShareMember,
57};
58
59pub use proton_sdk;