- Replaced raw string parameters with validated wrapper types (BucketName, ObjectName, Region, VersionId, etc.) following the "parse, don't validate" pattern
- Bucket and object names are now validated at construction time, ensuring compile-time correctness
- Added both relaxed (MinIO-compatible) and strict (AWS S3-compliant) validation modes for bucket names
The bug was using size (remaining bytes) instead of length (actual part size) when constructing PartInfo in the
multipart copy loop. This would record wrong sizes for each part - especially problematic for the last part.
Adds RequestHooks trait to enable intercepting and modifying S3 API
requests at key points in the request lifecycle. This enables implementing
cross-cutting concerns like load balancing, telemetry, and debug logging
without modifying the core request handling logic.
---------
Co-authored-by: Tobias Pütz <tobias@minio.io>
Adopt the typed-builder crate throughout the S3 API to provide compile-time
validation of builder patterns. This change improves type safety and developer
experience when constructing S3 API requests.
* error refactored: moved to thiserror
* Result type alias for better ergonomics:
* removed field from MinioErrorCode::BucketNotEmpty enum
* made field private of MinioErrorResponse
* updated XmlError
* simplified calling errors
* bumped toolchain channel form 1.86.0 to 1.87.0
* bumped toolchain channel form 1.87.0 to 1.88.0 due to clippy fixes that are not compatible with 1.87.0