Skip to main content

rc_core/
lib.rs

1//! rc-core: Core library for the rc S3 CLI client
2//!
3//! This crate provides the core functionality for the rc CLI, including:
4//! - Configuration management
5//! - Alias management
6//! - Path parsing and resolution
7//! - ObjectStore trait for S3 operations
8//!
9//! This crate is designed to be independent of any specific S3 SDK,
10//! allowing for easy testing and potential future support for other backends.
11
12pub mod admin;
13pub mod alias;
14pub mod config;
15pub mod cors;
16pub mod encryption;
17pub mod error;
18pub mod lifecycle;
19pub mod multipart_copy;
20pub mod object_key;
21pub mod object_lock;
22pub mod ops;
23pub mod path;
24pub mod replication;
25pub mod retry;
26pub mod select;
27pub mod traits;
28pub mod transfer;
29pub mod transfer_options;
30pub mod undo;
31pub mod watch;
32
33pub use alias::{
34    Alias, AliasManager, RequestHeader, global_request_headers, set_global_request_headers,
35    validate_alias_endpoint,
36};
37pub use config::{Config, ConfigManager};
38pub use cors::{CorsConfiguration, CorsRule};
39pub use encryption::{BucketEncryption, ObjectEncryptionRequest};
40pub use error::{Error, MultipartAbortStatus, Result};
41pub use lifecycle::{
42    LifecycleConfiguration, LifecycleDelMarkerExpiration, LifecycleExpiration, LifecycleRule,
43    LifecycleRuleStatus, LifecycleTransition, NoncurrentVersionExpiration,
44    NoncurrentVersionTransition,
45};
46pub use multipart_copy::{
47    DEFAULT_MULTIPART_COPY_PART_SIZE, MultipartCopyCancellation, MultipartCopyOptions,
48    MultipartCopyPart, MultipartCopyPlan, MultipartCopyProgress, MultipartCopyResult,
49    S3_MAX_OBJECT_SIZE, S3_MULTIPART_COPY_MAX_PART_SIZE, S3_MULTIPART_COPY_MAX_PARTS,
50    S3_MULTIPART_COPY_MIN_PART_SIZE, S3_SINGLE_COPY_MAX_SIZE, requires_multipart_copy,
51};
52pub use object_key::{ObjectKeyPolicy, normalize_relative_key, relative_local_path_from_key};
53pub use object_lock::{
54    BucketObjectLockConfiguration, DefaultRetention, LegalHoldStatus, ObjectLockOptions,
55    ObjectRetention, RetentionDuration, RetentionDurationUnit, RetentionMode,
56};
57pub use ops::{
58    HealthApi, HealthProbe, HealthReport, UsageBucket, UsageFailure, UsageReport, UsageScanApi,
59    UsageScanRequest, UsageScope, UsageSnapshotApi, UsageSource,
60};
61pub use path::{ParsedPath, RemotePath, parse_object_path, parse_path};
62pub use replication::{
63    BucketTarget, BucketTargetCredentials, ReplicationCheckPhase, ReplicationCheckPhaseState,
64    ReplicationCheckPhases, ReplicationCheckResult, ReplicationCheckStatus, ReplicationCheckTarget,
65    ReplicationConfiguration, ReplicationDestination, ReplicationResyncStartOptions,
66    ReplicationResyncStartResult, ReplicationResyncState, ReplicationResyncStatus,
67    ReplicationResyncTargetStatus, ReplicationRule, ReplicationRuleStatus,
68};
69pub use retry::{RetryBuilder, is_retryable_error, retry_with_backoff};
70pub use select::{
71    SelectCompression, SelectCsvFileHeaderInfo, SelectCsvInputOptions, SelectCsvOutputOptions,
72    SelectInputFormat, SelectJsonInputOptions, SelectJsonInputType, SelectJsonOutputOptions,
73    SelectOptions, SelectOutputFormat, SelectQuoteFields, SelectScanRangeOptions,
74    SelectSseCustomerOptions,
75};
76pub use traits::{
77    AbortMultipartUploadRequest, BucketNotification, Capabilities, CopyObjectOptions,
78    CreateBucketOptions, DeleteObjectFailure, DeleteObjectsResult, DeleteRequestOptions,
79    DeletedObject, ListObjectVersionsOptions, ListOptions, ListResult, MultipartIdentity,
80    MultipartUpload, MultipartUploadListOptions, MultipartUploadListResult, NotificationTarget,
81    ObjectInfo, ObjectReadOptions, ObjectStore, ObjectVersion, ObjectVersionIdentifier,
82    ObjectVersionListResult,
83};
84pub use transfer::{
85    TransferCancellation, TransferCandidate, TransferControls, TransferExecutor, TransferOutcome,
86    TransferOutcomeState, TransferPlan, TransferReport, TransferSelection, TransferSummary,
87};
88pub use transfer_options::{
89    ChecksumAlgorithm, ChecksumRequest, MetadataDirective, ObjectAttributes, ObjectChecksum,
90    ObjectTransferMetadata, ObjectWriteEncryption, ObjectWriteOptions, SseCustomerKey,
91    TaggingDirective, TransferCopyOptions, TransferReadOptions,
92};
93pub use undo::{
94    UndoAction, UndoObjectResult, UndoOutcome, UndoPlan, UndoPlanItem, plan_object_undo,
95};
96pub use watch::{WatchApi, WatchEvent, WatchFrame, WatchRequest, WatchSource, WatchStream};