Henk-Jan Lebbink
f4b4c9086d
feat: add request hooks infrastructure ( #188 )
...
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>
2025-11-10 14:39:12 +01:00
Henk-Jan Lebbink
5080bf9b85
Refactor/cleanup errors ( #179 )
...
* 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
2025-08-14 21:31:45 -07:00
Henk-Jan Lebbink
e244229490
tests cleanup; cargo clippy fixes, minor doc updates ( #177 )
...
* Tests cleanup; cargo clippy fixes, minor doc updates
* updated label checker workflow
2025-07-11 11:08:22 +02:00
Henk-Jan Lebbink
720943b4bb
Duplicated code removed, and lazy response evaluation ( #162 )
...
* Duplicated code removed, and lazy response evaluation
* moved Tokio runtime from general dependency to dev dependency
2025-06-18 09:55:53 -07:00
Henk-Jan Lebbink
6f904b452a
moved Tokio runtime from general dependency to dev dependency ( #167 )
...
* moved Tokio runtime from general dependency to dev dependency
* reduced number of worker threads in tests
2025-06-18 11:26:29 +02:00
Henk-Jan Lebbink
75602b2673
Added several tests to test_append_object ( #158 )
...
* Added several tests to test_append_object
* moved file creation to create_object_helper
2025-05-26 11:31:21 +02:00
Henk-Jan Lebbink
f6ca7dba03
Fixed xml parsing of bucket_lifecycle, added support for with_updated_at ( #153 )
2025-05-15 10:14:40 -07:00
Henk-Jan Lebbink
20d8654e34
Function names updated to reflect AWS names. Updated docs ( #150 )
...
* updated inline doc
* updated inline doc
* API naming conform AWS
* fixed clippy issues
* fixed minor API naming issues
2025-05-09 15:53:44 -07:00
Henk-Jan Lebbink
1869cfeba7
minor issues ( #149 )
2025-04-26 11:55:48 -07:00
Henk-Jan Lebbink
58d9203153
refactored all functions ( #145 )
...
* refactored stat_object
refactored select_object_content
refactor get_presigned_object_url
refactor get_presigned_policy_form_data
refactored upload-part-copy
* fixed object.unwrap
* update region
* made client Arc
* made client Arc
* update client
* update tests
* update segmented_bytes
* bench updated
* cleanup version handling
* cleanup of headers: multimap
* added inner in Client
* updated clients: added Into<String>in API
* Separated http_client and shared client items in Client
2025-04-23 10:18:18 -07:00
Henk-Jan Lebbink
ddec540b22
Refactor object lock config, retention, tags ( #140 )
...
* refactor make-bucket, bucket_exists, remove_bucket
* refactor disable-object-legal-hold, enable-object-legal-hold, is-object-legal-hold-enabled
2025-03-21 09:25:06 -07:00
Henk-Jan Lebbink
8134acdd09
Bumped rust edition from 2021 to 2024. Only change is some include sorting ( #128 )
2025-03-11 12:09:43 -07:00
Henk-Jan Lebbink
112c0aed1a
Refactor bucket-lifecycle, bucket-policy, bucket-encryption ( #124 )
...
* refactored from_s3response trait, and refactored get/set/delete policy
* * refactor set/get/delete bucket lifecycle
* refactored from_s3response trait,
* refactored get/set/delete bucket policy
* delete-bucket-encryption
2025-03-07 16:33:41 -08:00
Henk-Jan Lebbink
cba673a379
Refactor set_bucket_versioning ( #114 )
2025-02-20 17:52:07 -08:00
Aditya Manthramurthy
af8193aa95
Add metadata and other options for CreateMultipart ( #90 )
...
- Add validation for user-metadata keys.
- Ensure that options are passed to both single part PutObject and
Multipart upload when using the PutObjectContent higher level API.
2024-05-29 18:43:34 -07:00
Aditya Manthramurthy
43af36441a
fix: missing URL encoding for object names ( #86 )
...
URL encoding for S3 API requires that we do not encode '/' in addition
to the standard characters (`_-~.` and alphanumerics).
Also fixes a bug in error response parsing (bucket name was not parsed
correctly).
Also adds another put-object example accepting CLI args.
2024-04-26 10:06:27 -07:00
Aditya Manthramurthy
773ad9133f
Return size info in put/get APIs ( #82 )
...
Also:
- fix some constraints to allow ObjectContent to be sent across async
tasks.
- use new Size enum instead of Option for specifying object content
sizes
- add tests for part size calculation and validations
2024-04-10 07:51:42 -07:00
Aditya Manthramurthy
54b671ef4c
Add new put and get APIs for objects ( #78 )
...
- put_object_content -> streaming object uploads
- put_object_from_file -> upload file
- put_object, create_multipart_uload, abort_multipart_upload,
upload_part, complete_multipart_upload -> S3 APIs for single and
multipart uploads
- get_object -> streaming object downloads
2024-04-03 06:39:54 +05:30
Aditya Manthramurthy
3f160cb6c0
Parse and add tags to list objects output type ( #77 )
2024-04-03 06:36:53 +05:30
Aditya Manthramurthy
c672e7528b
Fix list objects xml parsing bug and improve perf. ( #59 )
...
For list-object-versions there was a bug that would return delete
markers after all versions of an object. The server response contains
the order of versions and delete markers according to recency and the
list objects client call should preserve this. This is fixed in this
change.
XML parsing was using the `take_child` call, that mutates a vector
removing an element in it. For a response containing N items, using
take_child on item, causes the XML parsing cost to be O(N^2) (so 1
million operations for a 1000 item list) - this change makes the parsing
cost linear.
2024-04-03 06:33:37 +05:30
Aditya Manthramurthy
fc20535f1d
Add builder style for list_objects ( #74 )
...
- Also add `include_user_metadata` option for list object versions
2024-04-03 06:09:40 +05:30
Bala FA
28e7fee8fa
Add documentation and few enhancements ( #45 )
...
Signed-off-by: Bala.FA <bala@minio.io>
2023-09-26 05:16:11 +05:30
Bala FA
67d92a3427
Add more APIs ( #25 )
...
* {set,get,delete}_bucket_notification
* {set,get,delete}_bucket_policy
* {set,get,delete}_bucket_replication
* {set,get,delete}_bucket_tags
* {set,get,delete}_object_lock_config
* {set,get,delete}_object_tags
* {set,get}_bucket_versioning
* {set,get}_object_retention
* get_presigned_object_url
* get_presigned_post_form_data
* {upload,download}_object
Signed-off-by: Bala.FA <bala@minio.io>
2022-11-30 12:25:36 -08:00
Bala FA
5fea81d68d
Add bucket encryption/lifecycle and object legal-hold APIs. ( #24 )
...
Below APIs are added
* DeleteBucketEncryption()
* GetBucketEncryption()
* SetBucketEncryption()
* DisableObjectLegalHold()
* EnableObjectLegalHold()
* IsObjectLegalHoldEnabled()
* DeleteBucketLifecycle()
* GetBucketLifecycle()
* SetBucketLifecycle()
Signed-off-by: Bala.FA <bala@minio.io>
2022-09-28 06:12:09 +05:30
Bala FA
c5f8f61bdf
Add compose_object() API ( #20 )
...
Signed-off-by: Bala.FA <bala@minio.io>
2022-09-04 20:11:02 -07:00
Bala FA
c21dda1492
Add listen_bucket_notification() API ( #15 )
...
Signed-off-by: Bala.FA <bala@minio.io>
2022-08-31 08:20:33 -07:00
Bala FA
0fb80e1456
Refactor S3 client implementation ( #13 )
...
Added below S3 APIs
* abort_multipart_upload()
* bucket_exists()
* complete_multipart_upload()
* create_multipart_upload()
* get_object()
* list_buckets()
* list_objects_v1()
* list_objects_v2()
* list_object_versions()
* list_objects()
* make_bucket()
* put_object()
* put_object_api()
* remove_bucket()
* remove_object()
* remove_objects_api()
* remove_objects()
* select_object_content()
* stat_object()
* upload_part()
Signed-off-by: Bala.FA <bala@minio.io>
2022-08-20 15:10:11 -07:00