Expand description
Server-side copy, move, single-object delete, batch delete, and folder creation.
§Responsibilities
CopyOptions— directive flags forCopyObject(OCP-open).CopyResult— IPC-safe result ofcopy_object.CopyOutcome— discriminated result ofcopy_object_with_fallback.MoveResult— IPC-safe result ofmove_object.DeletedObject— one successfully deleted entry in aDeleteReport.DeleteFailure— one failed entry in aDeleteReport.DeleteReport— partial-failure report fromdelete_objects_batch.copy_object— wrapsCopyObject; classifies SDK errors.copy_object_with_fallback— server-side copy with cross-account download+upload fallback and threshold confirmation gate.delete_single_object— wrapsDeleteObject; used bymove_object.move_object— copy then delete (atomic from caller perspective).delete_objects_batch— batched delete viaDeleteObjects(1 000-key chunks).create_folder— PUTs a zero-byte object withkey = prefix/.parent_prefix— pure helper:"a/b/c.txt"→"a/b/".
§OCP
CopyOptionsis open for new directives (checksum, version preservation) via#[serde(default)]fields — existing callers are unaffected.CopyOutcomeis open for new variants (AsyncTransferQueued, …) — the discriminator pattern keeps the frontend adaptable.move_object = copy_object + delete_single_objectkeeps the primitive surface minimal; task-36 (metadata setters) composes on the same primitives.DeleteReportshape lets the frontend show “N deleted, M failed” without all-or-nothing semantics. AC-4 partial-failure contract.- Error classification mirrors
list.rspatterns so the frontend mapsAppError.kinduniformly.
Structs§
- Bytes
Payload - Raw bytes fetched from S3, base64-encoded for safe IPC transport.
- Copy
Object Result Detail - ETag + last-modified from the
CopyObjectResultresponse element. - Copy
Options - Options that control the
CopyObjectAPI call. - Copy
Result - IPC-safe result returned from
copy_objectand forwarded to the frontend. - Delete
Failure - One entry that failed to delete in a
delete_objects_batchcall. - Delete
Report - Result of
delete_objects_batch. - Deleted
Object - One entry that was successfully deleted in a
delete_objects_batchcall. - Move
Result - IPC-safe result returned from
move_object. - Text
Payload - Text content fetched from S3, decoded as UTF-8.
Enums§
- Copy
Outcome - Result of
copy_object_with_fallback. - Metadata
Directive - Metadata/tagging directive for
CopyObject.
Constants§
- DEFAULT_
BYTES_ MAX_ BYTES - Default maximum bytes to read for binary preview.
- DEFAULT_
TEXT_ MAX_ BYTES - Default maximum bytes to read for text preview.
- DELETE_
BATCH_ 🔒SIZE - Maximum number of keys per
DeleteObjectsAPI call (AWS hard limit).
Functions§
- classify_
copy_ 🔒sdk_ error - classify_
delete_ 🔒objects_ sdk_ error - classify_
delete_ 🔒sdk_ error - classify_
get_ 🔒sdk_ error - classify_
head_ 🔒sdk_ error - classify_
put_ 🔒sdk_ error - copy_
object - Copy
src_bucket/src_keytodest_bucket/dest_keyvia server-side copy. - copy_
object_ with_ fallback - Copy
src_bucket/src_keytodest_bucket/dest_keywith a cross-account fallback. - create_
folder - Create a virtual folder placeholder at
bucket/prefix/. - delete_
objects_ batch - Delete a batch of objects from
bucket. - delete_
single_ object - Delete a single object from
bucketatkey. - get_
object_ bytes - Fetch the first
max_bytesbytes ofbucket/keyas base64-encoded binary. - get_
object_ text - Fetch the first
max_bytesbytes ofbucket/keyas a UTF-8 string. - is_
access_ 🔒denied - Detect whether an
AppErrorrepresents an access-denied condition from S3. - move_
object - Move
src_bucket/src_keytodest_bucket/dest_key. - parent_
prefix - Return the parent prefix of an S3 key.
- put_
object_ text - Write
bodytobucket/keywith an optional ETag precondition. - set_
object_ storage_ class - Change the storage class of
bucket/keyvia a server-side self-copy. - tracing_
or_ 🔒eprintln - Emit a structured warning without pulling in the full tracing dependency.
Replace with
tracing::warn!once that crate is wired up.