bucketwarden-server 0.1.0

BucketWarden storage server runtime.
Documentation
#![allow(clippy::format_collect)]

use bucketwarden_audit::{AuditEvent, AuditLog, AuditOutcome, AuditSummary};
use bucketwarden_auth::{
    AccessKey, AssumeRoleWithCustomIdentityRequest, AssumeRoleWithWebIdentityRequest, AuthError,
    AuthStore, CredentialRecord, CredentialRotation, CredentialScope, IdentityProvider,
    LeakedKeyResponse, SessionCredential, DEFAULT_TENANT_ID,
};
use bucketwarden_kms::{
    Ciphertext, EnvelopeMetadata, KeyRecord, KeyStatus, KmsError, KmsProvider, LocalXorKms,
};
use bucketwarden_lock::{LockError, ObjectLock, RetentionMode};
use bucketwarden_policy::{
    Effect, Policy, PolicyExplanation, PolicyFinding, PolicySimulationRequest,
    PolicySimulationResult, RequestContext, Statement,
};
use bucketwarden_repl::{ReplicationAction, ReplicationLog, ReplicationRecord, ReplicationSummary};
use bucketwarden_s3::{
    api_operation_report, bucket_control_report, client_compatibility_report, object_data_report,
    object_resource, protocol_surface_report,
    sigv4::{sha256_hex, verify_authorization_header, verify_presigned_url, SigV4Request},
    validate_bucket_name, validate_object_key, AbortIncompleteMultipartUpload,
    AbortMultipartUploadRequest, AccessControlOwner, AccessControlPolicy, AclGrant, AclResult,
    AnalyticsAndOperator, AnalyticsConfiguration, AnalyticsExportDestination, AnalyticsFilter,
    AnalyticsS3BucketDestination, AnalyticsTag, ApiOperationReport, Bucket, BucketAbacStatus,
    BucketAccelerateConfiguration, BucketControlReport, BucketCorsResult,
    BucketEncryptionConfiguration, BucketInfo, BucketInventoryEntry, BucketInventoryReport,
    BucketInventoryRequest, BucketLifecycleConfiguration, BucketLocationResult,
    BucketLoggingEnabled, BucketLoggingStatus, BucketMetadataConfiguration,
    BucketMetadataTableConfiguration, BucketNotificationConfiguration,
    BucketObjectLockConfiguration, BucketOwnershipControls, BucketPolicyRequest,
    BucketPolicyResult, BucketPolicyStatus, BucketQuotaConfiguration,
    BucketReplicationConfiguration, BucketRequestPaymentConfiguration, BucketTaggingRequest,
    BucketTaggingResult, BucketVersioningResult, BucketVersioningStatus,
    BucketWebsiteConfiguration, Checksum, ClientCompatibilityReport, CloudFunctionConfiguration,
    CommonPrefix, CompleteMultipartUploadRequest, CompleteMultipartUploadResult,
    CompletedMultipartUpload, CompletedPart, Condition, ConsoleBucketRow, ConsoleMetricSummary,
    ConsoleObjectRow, ConsolePolicyRow, ConsoleRuntimeReport, ConsoleSupportFeature,
    ConsoleUserRow, ContinuationEvent, CopyObjectRequest, CopyObjectResult, CopyPartResult,
    CorsRule, CreateBucketConfiguration, CreateMultipartUploadRequest, CreateMultipartUploadResult,
    CreateSessionRequest, CreateSessionResult, CsvInput, CsvOutput, Delete,
    DeleteMarkerReplication, DeleteObjectEntry, DeleteObjectResult, DeleteObjectVersionResult,
    DeletedObject, Destination, DestinationResult, EndEvent, ErrorDetails, ErrorDocument,
    EventBridgeConfiguration, EventCategoryReport, EventComplianceReport,
    ExistingObjectReplication, FilterRule, GetBucketMetadataTableConfigurationResult,
    GetObjectAttributesParts, GetObjectAttributesResult, GetObjectResult, HeadObjectResult,
    InputSerialization, IntelligentTieringAndOperator, IntelligentTieringConfiguration,
    IntelligentTieringFilter, IntelligentTieringTag, InventoryConfiguration, InventoryDestination,
    InventoryEncryption, InventoryFilter, InventoryS3BucketDestination, InventorySchedule,
    InventoryTableConfiguration, InventoryTableConfigurationResult, JournalTableConfiguration,
    JournalTableConfigurationResult, JsonInput, LifecycleRule, LifecycleRunResult,
    LifecycleVersionTarget, ListAnalyticsConfigurationsResult, ListDirectoryBucketsResult,
    ListIntelligentTieringConfigurationsResult, ListInventoryConfigurationsResult,
    ListMetricsConfigurationsResult, ListMultipartUploadsResult, ListObjectVersionsRequest,
    ListObjectVersionsResult, ListObjectsRequest, ListObjectsResult, ListPartsResult,
    ListedDeleteMarker, ListedMultipartUpload, ListedObject, ListedObjectVersion, ListedPart,
    MetadataConfigurationErrorDetails, MetadataConfigurationResult, MetadataDirective,
    MetadataTableConfigurationResult, MetadataTableEncryptionConfiguration, MetricsAndOperator,
    MetricsConfiguration, MetricsFilter, MetricsTag, NotificationEvent, NotificationEventSummary,
    NotificationRule, ObjectDataReport, ObjectLegalHoldRequest, ObjectLegalHoldResult,
    ObjectLockDefaultRetention, ObjectMetadata, ObjectRetentionRequest, ObjectRetentionResult,
    ObjectTaggingRequest, ObjectTaggingResult, OpsAdminSurfaceReport, OpsEvidenceExportReport,
    OpsHealthReport, OpsIncidentReport, ProtocolSurfaceReport, PublicAccessBlockConfiguration,
    PutObjectRequest, PutObjectResult, QuotaUsageReport, RecordExpiration, RenameObjectRequest,
    RenameObjectResult, ReplicationRule, ReplicationRunResult, ReplicationStatusEntry,
    ReplicationStatusReport, RuntimeConfigReport, RuntimeInventoryEntry, RuntimeInventoryReport,
    RuntimeInventoryRequest, RuntimeInventorySummaryReport, RuntimeInventorySummaryRequest,
    S3Action, S3HttpRequest, S3HttpResponse, S3TablesDestination, S3TablesDestinationResult,
    ServerSideEncryption, StorageClassAnalysis, StorageClassAnalysisDataExport,
    TenantInventoryEntry, TenantInventoryReport, TenantInventoryRequest, TenantQuotaConfiguration,
    Tiering, UpdateObjectEncryptionRequest, UpdateObjectEncryptionResult, UploadPartRequest,
    UploadPartResult, WebsiteObjectResult, WebsiteRoutingRule, WriteGetObjectResponseRequest,
};
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
use thiserror::Error;
pub const CRATE_PURPOSE: &str = "storage server runtime";
pub const DEFAULT_BUCKET_REGION: &str = "us-east-1";
const INTERNAL_SIGV4_REGION_HEADER: &str = "x-bucketwarden-sigv4-region";
mod aws_query_compat;
mod browser_ui;
mod bucket_analytics;
mod bucket_basics;
mod bucket_intelligent_tiering;
mod bucket_inventory;
mod bucket_metadata;
mod bucket_metrics;
mod bucket_policy_acl;
mod consistency_model_support;
mod console_api;
mod encryption_audit;
mod encryption_policy;
mod erasure_coding_support;
mod error_encoding;
mod event_audit_observability;
mod filesystem_store;
mod http_helpers;
mod integrity_verification;
mod large_object_optimization_support;
mod lifecycle;
mod lifecycle_inventory;
mod lifecycle_quotas;
mod metadata_architecture_support;
mod object_delete_tag_lock;
mod object_layout_support;
mod object_lock_admin;
mod object_multipart;
mod object_read_list;
mod object_write;
mod observability_internal;
mod ops_admin_surfaces;
mod ops_config_reports;
mod ops_console;
mod ops_evidence_exports;
mod ops_health_diagnostics;
mod ops_incident_reports;
mod parsing_bucket;
mod parsing_config;
mod placement_domain_support;
mod replication_cors;
mod replication_observability;
mod replication_strategy_support;
mod runtime_core;
mod s3_bucket_dispatch;
mod s3_http;
mod s3_object_dispatch;
mod s3_select_runtime;
mod s3_select_validation;
mod s3_service_specific_errors;
mod s3_targets;
mod small_object_optimization_support;
mod state;
mod storage_backend_support;
mod storage_commit;
mod validators;
mod xml_bucket;
mod xml_object_multipart;
pub use browser_ui::*;
pub use bucketwarden_auth::{
    CredentialSupportReport, IdentityProviderSupportReport, OperatorAction, OperatorRole,
    RoleAssignment, TemporaryCredentialSupportReport,
};
pub(crate) use bucketwarden_crypto::md5_digest;
pub(crate) use bucketwarden_errors::s3_service_specific_error_by_family_code;
pub use bucketwarden_errors::{s3_service_specific_error_catalog, S3ServiceSpecificError};
pub use consistency_model_support::*;
pub use console_api::*;
pub use erasure_coding_support::*;
pub(crate) use error_encoding::*;
pub use filesystem_store::*;
pub(crate) use http_helpers::*;
pub use integrity_verification::*;
pub use large_object_optimization_support::*;
pub use metadata_architecture_support::*;
pub use object_layout_support::*;
pub(crate) use parsing_bucket::*;
pub(crate) use parsing_config::*;
pub use placement_domain_support::*;
pub use replication_strategy_support::*;
pub(crate) use s3_select_validation::*;
pub use s3_service_specific_errors::*;
pub(crate) use s3_targets::*;
pub use small_object_optimization_support::*;
pub use state::*;
pub use storage_backend_support::*;
pub use storage_commit::*;
pub(crate) use validators::*;
pub(crate) use xml_bucket::*;
pub(crate) use xml_object_multipart::*;
#[derive(Clone, Debug, Eq, PartialEq)]
struct S3RequestTarget {
    bucket: Option<String>,
    key: Option<String>,
}