aster_forge_storage_core/
lib.rs

1//! Shared storage utility helpers for Aster services.
2//!
3//! The crate contains storage-adjacent primitives that are independent of concrete drivers:
4//! safe relative object-key handling and S3-compatible endpoint normalization. Driver traits,
5//! connector wiring, and credential storage remain in application crates where policy decisions
6//! belong.
7#![cfg_attr(
8    not(test),
9    deny(
10        clippy::unwrap_used,
11        clippy::unreachable,
12        clippy::expect_used,
13        clippy::panic,
14        clippy::unimplemented,
15        clippy::todo
16    )
17)]
18
19pub mod object_key;
20pub mod s3_config;
21
22pub use object_key::{
23    join_key_prefix, normalize_object_key, normalize_object_prefix, normalize_relative_key,
24    strip_key_prefix,
25};
26pub use s3_config::{NormalizedS3Config, S3ConfigError, normalize_s3_endpoint_and_bucket};
27
28/// Result type returned by storage core helpers.
29pub type Result<T> = std::result::Result<T, StorageCoreError>;
30
31/// Errors produced by storage core helpers.
32#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
33pub enum StorageCoreError {
34    /// The object key is not a safe relative storage path.
35    #[error("{0}")]
36    InvalidObjectKey(String),
37}