Commit Graph
60 Commits
Author SHA1 Message Date
nvrl 9dd535b374 improved performance, concurrent upload, version 0.2.0 2026-07-24 20:29:15 +02:00
nvrl fcf4fc9fb0 version adjusted for drive 2026-07-22 03:05:49 +02:00
nvrl 0777c071b6 version bump to 0.1.12 2026-07-22 03:03:59 +02:00
nvrl 8c786bcf3a Photo duplicate detection, Atomic small uploads support buffered new files and revisions, Small uploads are disabled by default and enabled with .with_small_file_upload(true), Added authenticated multipart HTTP support with retry and token refresh 2026-07-22 03:03:25 +02:00
nvrl 14d69d7060 fmt 2026-07-20 00:07:30 +02:00
nvrl 684ecb2abb updated deps 2026-07-20 00:07:08 +02:00
nvrl 75a615dd28 added re captcha flow 2026-07-19 23:14:25 +02:00
nvrl 8c44768010 version bump 2026-07-19 19:40:27 +02:00
nvrl ac9bfc48b0 fixed orphaned docs 2026-07-19 14:27:34 +02:00
nvrl 24a99e6b9a public link consume, revision history, path helpers
Public links (public_link.rs, ported from the TS SDK — the C# SDK has no
equivalent): ProtonDrivePublicLinkClient lets a visitor with no Proton
account open someone else's share link. `info` reads pre-auth metadata,
`open` runs the SRP handshake against drive/urls/{token}/info + /auth and
unlocks the share key (bcrypt SharePasswordSalt -> key password -> the
SKESK'd SharePassphrase -> ShareKey). The read surface then reuses the
ordinary link/children/revision endpoints. Signature verification is
deliberately absent: an anonymous visitor cannot read core/v4/keys/all,
matching the TS SDK. Supporting primitives: http::get_unauthenticated and
crypto::decrypt_armored_with_password.

Revision history: enumerate_revisions / get_revision / restore_revision /
delete_revision, plus open_revision_at / download_revision{,_to} to read a
specific revision. Drafts are filtered on the wire value, since
RevisionState::from_raw maps 0 to Active. Three server behaviors found
live and worked around: ?NoBlockUrls=true still emits Blocks with null
BareURL, so get_revision deserializes into a DTO without that field; the
restore POST needs an empty object body, not null; and restore is async
(HTTP 202, non-1000 envelope) so the new active revision is not live on
return.

Path and hierarchy helpers: get_node_hierarchy, get_node_path,
get_node_by_path, create_folder_path. Names are encrypted and there is no
name-query endpoint, so lookup walks and decrypts one directory level per
segment.

Fix a silent-corruption path in block-size resolution. RevisionReader
accumulates block sizes to derive where each block starts in the
plaintext, so a vector that overstates any block but the last shifts every
block after it and the reader splices at the wrong offsets — full-length
reads of the wrong bytes, no error raised. resolve_block_sizes previously
guessed all-full blocks when both Common.BlockSizes and Common.Size were
unusable. It now errors for multi-block files and only assumes a full
block when there is exactly one (which cannot be misaligned). Regression
test in revision.rs::padded_block_sizes_shift_later_blocks.

Recover from stale upload drafts. An upload interrupted after the draft
node was created but before it was sealed leaves an unsealed draft, and
every later attempt at that name returns 422 AlreadyExists forever. Draft
creation now deletes the conflicting node and retries when the conflict is
an unsealed draft; by default only our own client's, with
upload_file_replacing_draft_from opting into any client's to recover
across a daemon restart (which rotates our client uid). A committed file
of that name is never touched.

Live tests for the public-link round trip, custom-password links, revision
history, and the path helpers.
2026-07-19 13:17:30 +02:00
nvrl f75ecb04b6 event manager, concurrency, optimizations 2026-07-17 22:30:32 +02:00
nvrl 0a15a8c86e revision handler, parallel block download + gzip 2026-07-17 15:57:00 +02:00
nvrl 0e335e35ec updated readme 2026-07-16 16:47:46 +02:00
nvrl 75f707719f fast node walk without decrypt + fixed crypto dub bug 2026-07-16 16:40:42 +02:00
nvrl 27a10598b8 sharing fix 2026-07-16 01:20:17 +02:00
nvrl 2fa9b90265 feature (public link retrievel) 2026-07-15 20:37:00 +02:00
nvrl 64f977edb3 feature (devices+sharing) + upgraded rand and aeds 2026-07-15 19:34:40 +02:00
nvrl 78567bf00e version bump to 0.1.5 2026-07-14 15:04:04 +02:00
nvrl 7c9d16b405 added device support + sharing 2026-07-14 15:03:06 +02:00
nvrl a24785d1a9 added persistent key salts 2026-07-13 10:26:12 +02:00
nvrl 2e3c23803e added token refresh callback 2026-07-13 02:18:59 +02:00
nvrl de6b61256e version bump to 0.1.4 2026-07-10 16:00:59 +02:00
nvrl 0d07fdb084 added device support 2026-07-10 15:59:56 +02:00
nvrl 6291c6f478 Export PhotoUploadMetadata and bump version to 0.1.3 2026-06-30 23:34:04 +02:00
nvrl e8de3b09cc fmt 2026-06-30 04:34:29 +02:00
nvrl 8039793010 added badges + github templates 2026-06-30 04:33:31 +02:00
nvrl 800fe7b612 added ci 2026-06-30 04:26:37 +02:00
nvrl ec7de59851 updated readme 2026-06-30 04:21:04 +02:00
nvrl 0221a654c2 version bump 2026-06-30 03:30:48 +02:00
nvrl f702e56110 clippy + fmt 2026-06-30 03:29:40 +02:00
nvrl 9ec205f217 fixed photo deserial 2026-06-30 03:29:25 +02:00
nvrl 2716be77ef version bump 2026-06-28 17:12:12 +02:00
nvrl c7e8467fe2 added range + live test 2026-06-28 16:14:37 +02:00
nvrl 643f5a2c3b renamed for crate 2026-06-28 11:47:54 +02:00
nvrl c98ec2d55d cargo fmt + clippy 2026-06-28 11:41:51 +02:00
nvrl 70e573ebe1 bumped deps + fixed deprecations + session for live tests 2026-06-28 11:39:57 +02:00
nvrl b9742e122a added license, author, metadata 2026-06-28 10:33:59 +02:00
nvrl 20fe359162 photo, volume op tests + fixes 2026-06-28 10:25:54 +02:00
nvrl 52b594e524 added file tests + fixed client move_node 2026-06-27 01:12:37 +02:00
nvrl 1ae5555e01 added .env to gitignore 2026-06-26 20:48:11 +02:00
nvrl e2f5ab7ad6 fmt + Clippy 2026-06-26 20:47:06 +02:00
nvrl ec590fd52b fixed invalid manifest signature in pgp 2026-06-26 20:46:20 +02:00
nvrl 35d9d8f3dd dto 2026-06-26 20:00:34 +02:00
nvrl 1ac1b1e9a2 ExtendedAttributes ModificationTime + Plural EnumerateThumbnails + missing event scopes 2026-06-26 17:37:51 +02:00
nvrl 8eb7b8f56f implemented missing drive endpoints 2026-06-26 16:01:35 +02:00
nvrl 4c3058c618 fixed x-pm-appversion for test login 2026-06-26 14:21:09 +02:00
nvrl e15f2d3111 enumeration returns NodeUids (enumerate_folder_children_node_uids / enumerate_trash_node_uids), caller materializes via enumerate_nodes. noise dropped: BOM/deps/kt-enum-order/cs-account-refactor 2026-06-26 14:15:54 +02:00
nvrl 5685923034 upstream changelog for port 2026-06-26 14:06:50 +02:00
nvrl 2400e28e4a Update README.md 2026-06-25 17:34:11 +02:00
nvrl 69c09dac24 removed hidden-line markers from doc 2026-06-25 17:27:47 +02:00