#![deny(missing_docs)]
pub mod access;
pub mod auth;
pub mod bucket_name;
pub mod conditional;
pub mod error;
pub mod etag;
pub mod events;
pub mod kb;
pub mod listing;
pub mod metrics;
pub mod object_path;
pub mod preconditions;
pub mod range;
pub mod reconcile;
pub mod search;
pub mod setting;
pub mod slug;
pub mod staging;
pub mod storage;
#[cfg(any(test, feature = "test-support"))]
pub mod testing;
pub use access::{
AccessPolicy, AccessRule, Effect, Identity, KeyFilter, KeyPattern, Principal, UserIdentity,
Verb, Who, signed_in_policies,
};
pub use auth::{
Authenticator, CredentialRefused, ProtectedResource, Schemes, TokenRejected, TokenVerifier,
extract_basic_from_header, extract_bearer_from_header, verify_basic_credentials,
verify_bearer_token,
};
pub use bucket_name::{
BUCKET_NAME_MAX, BUCKET_NAME_PREFIX, derive_bucket_name, validate_bucket_name,
};
pub use conditional::ConditionalHeaders;
pub use error::{Error, StorageError};
pub use etag::{EtagHasher, compute_etag};
pub use events::{
EventId, EventPublisher, EventSource, EventStream, ObjectEvent, ObjectEventKind, PublishError,
StreamError, SubscribeError, unix_to_rfc3339,
};
pub use kb::{KbDetails, KbManifest, ManifestEmbedding, ObjectMeta, slug_kb_details};
pub use listing::{Rollup, roll_up};
pub use object_path::{ObjectPath, is_internal_path};
pub use preconditions::{
ObjectState, evaluate_read_preconditions, evaluate_write_preconditions, matches_if_match,
matches_if_none_match, parse_http_date_or_err, resolve_range, unix_seconds, unix_seconds_i64,
};
pub use range::{
ByteRange, LineIndex, LineRange, ParsedRange, RangeParseError, parse_line_range_header,
parse_range_header,
};
pub use setting::{flag_for, setting};
pub use slug::{KbSlug, TenantSlug};
pub use staging::{
AsyncReadSeek, ReadSeek, StageError, StagedBody, StagingConfig, UPLOAD_TMP_DIR_ENV,
};
pub use storage::{
CopyObjectOptions, ListResponse, ObjectChunkStream, ObjectRead, ObjectStream, PutOutcome,
Storage,
};