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_lock;
21pub mod ops;
22pub mod path;
23pub mod replication;
24pub mod retry;
25pub mod select;
26pub mod traits;
27pub mod transfer;
28pub mod transfer_options;
29pub mod undo;
30pub mod watch;
31
32pub use alias::{
33    Alias, AliasManager, RequestHeader, global_request_headers, set_global_request_headers,
34    validate_alias_endpoint,
35};
36pub use config::{Config, ConfigManager};
37pub use cors::{CorsConfiguration, CorsRule};
38pub use encryption::{BucketEncryption, ObjectEncryptionRequest};
39pub use error::{Error, MultipartAbortStatus, Result};
40pub use lifecycle::{
41    LifecycleConfiguration, LifecycleExpiration, LifecycleRule, LifecycleRuleStatus,
42    LifecycleTransition, NoncurrentVersionExpiration, NoncurrentVersionTransition,
43};
44pub use multipart_copy::{
45    DEFAULT_MULTIPART_COPY_PART_SIZE, MultipartCopyCancellation, MultipartCopyOptions,
46    MultipartCopyPart, MultipartCopyPlan, MultipartCopyProgress, MultipartCopyResult,
47    S3_MAX_OBJECT_SIZE, S3_MULTIPART_COPY_MAX_PART_SIZE, S3_MULTIPART_COPY_MAX_PARTS,
48    S3_MULTIPART_COPY_MIN_PART_SIZE, S3_SINGLE_COPY_MAX_SIZE, requires_multipart_copy,
49};
50pub use object_lock::{
51    BucketObjectLockConfiguration, DefaultRetention, LegalHoldStatus, ObjectLockOptions,
52    ObjectRetention, RetentionDuration, RetentionDurationUnit, RetentionMode,
53};
54pub use ops::{
55    HealthApi, HealthProbe, HealthReport, UsageBucket, UsageFailure, UsageReport, UsageScanApi,
56    UsageScanRequest, UsageScope, UsageSnapshotApi, UsageSource,
57};
58pub use path::{ParsedPath, RemotePath, parse_object_path, parse_path};
59pub use replication::{
60    BucketTarget, BucketTargetCredentials, ReplicationCheckPhase, ReplicationCheckPhaseState,
61    ReplicationCheckPhases, ReplicationCheckResult, ReplicationCheckStatus, ReplicationCheckTarget,
62    ReplicationConfiguration, ReplicationDestination, ReplicationResyncStartOptions,
63    ReplicationResyncStartResult, ReplicationResyncState, ReplicationResyncStatus,
64    ReplicationResyncTargetStatus, ReplicationRule, ReplicationRuleStatus,
65};
66pub use retry::{RetryBuilder, is_retryable_error, retry_with_backoff};
67pub use select::{
68    SelectCompression, SelectCsvFileHeaderInfo, SelectCsvInputOptions, SelectCsvOutputOptions,
69    SelectInputFormat, SelectJsonInputOptions, SelectJsonInputType, SelectJsonOutputOptions,
70    SelectOptions, SelectOutputFormat, SelectQuoteFields, SelectScanRangeOptions,
71    SelectSseCustomerOptions,
72};
73pub use traits::{
74    AbortMultipartUploadRequest, BucketNotification, Capabilities, CopyObjectOptions,
75    CreateBucketOptions, DeleteObjectFailure, DeleteObjectsResult, DeleteRequestOptions,
76    DeletedObject, ListObjectVersionsOptions, ListOptions, ListResult, MultipartIdentity,
77    MultipartUpload, MultipartUploadListOptions, MultipartUploadListResult, NotificationTarget,
78    ObjectInfo, ObjectReadOptions, ObjectStore, ObjectVersion, ObjectVersionIdentifier,
79    ObjectVersionListResult,
80};
81pub use transfer::{
82    TransferCancellation, TransferCandidate, TransferControls, TransferExecutor, TransferOutcome,
83    TransferOutcomeState, TransferPlan, TransferReport, TransferSelection, TransferSummary,
84};
85pub use transfer_options::{
86    ChecksumAlgorithm, ChecksumRequest, MetadataDirective, ObjectAttributes, ObjectChecksum,
87    ObjectTransferMetadata, ObjectWriteEncryption, ObjectWriteOptions, SseCustomerKey,
88    TaggingDirective, TransferCopyOptions, TransferReadOptions,
89};
90pub use undo::{
91    UndoAction, UndoObjectResult, UndoOutcome, UndoPlan, UndoPlanItem, plan_object_undo,
92};
93pub use watch::{WatchApi, WatchEvent, WatchFrame, WatchRequest, WatchSource, WatchStream};