Skip to content

Commit f11fafd

Browse files
committed
use crate TypedBuilder for builders
bugfixes WIP doc updated
1 parent 5a90956 commit f11fafd

File tree

204 files changed

+3243
-3203
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

204 files changed

+3243
-3203
lines changed

.claude/settings.local.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"permissions": {
3+
"allow": [
4+
"Bash(grep:*)"
5+
],
6+
"deny": []
7+
},
8+
"$schema": "https://json.schemastore.org/claude-code-settings.json"
9+
}

Cargo.toml

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -33,41 +33,42 @@ bytes = { workspace = true }
3333
async-std = { workspace = true, features = ["attributes"] }
3434
reqwest = { workspace = true, features = ["stream"] }
3535

36-
async-recursion = "1.1.1"
37-
async-stream = "0.3.6"
38-
async-trait = "0.1.88"
39-
base64 = "0.22.1"
40-
chrono = "0.4.41"
41-
crc = "3.3.0"
36+
async-recursion = "1.1"
37+
async-stream = "0.3"
38+
async-trait = "0.1"
39+
base64 = "0.22"
40+
chrono = "0.4"
41+
crc = "3.3"
4242
dashmap = "6.1.0"
43-
env_logger = "0.11.8"
44-
hmac = { version = "0.12.1", optional = true }
45-
hyper = { version = "1.6.0", features = ["full"] }
46-
lazy_static = "1.5.0"
47-
log = "0.4.27"
48-
md5 = "0.8.0"
49-
multimap = "0.10.1"
50-
percent-encoding = "2.3.1"
51-
url = "2.5.4"
52-
regex = "1.11.1"
53-
ring = { version = "0.17.14", optional = true, default-features = false, features = ["alloc"] }
54-
serde = { version = "1.0.219", features = ["derive"] }
55-
serde_json = "1.0.142"
56-
sha2 = { version = "0.10.9", optional = true }
57-
urlencoding = "2.1.3"
58-
xmltree = "0.11.0"
59-
http = "1.3.1"
60-
thiserror = "2.0.14"
43+
env_logger = "0.11"
44+
hmac = { version = "0.12", optional = true }
45+
hyper = { version = "1.7", features = ["full"] }
46+
lazy_static = "1.5"
47+
log = "0.4"
48+
md5 = "0.8"
49+
multimap = "0.10"
50+
percent-encoding = "2.3"
51+
url = "2.5"
52+
regex = "1.11"
53+
ring = { version = "0.17", optional = true, default-features = false, features = ["alloc"] }
54+
serde = { version = "1.0", features = ["derive"] }
55+
serde_json = "1.0"
56+
sha2 = { version = "0.10", optional = true }
57+
urlencoding = "2.1"
58+
xmltree = "0.11"
59+
http = "1.3"
60+
thiserror = "2.0"
61+
typed-builder = "0.21"
6162

6263
[dev-dependencies]
6364
minio-common = { path = "./common" }
6465
minio-macros = { path = "./macros" }
65-
tokio = { version = "1.47.1", features = ["full"] }
66-
async-std = { version = "1.13.1", features = ["attributes", "tokio1"] }
67-
clap = { version = "4.5.44", features = ["derive"] }
68-
rand = { version = "0.9.2", features = ["small_rng"] }
69-
quickcheck = "1.0.3"
70-
criterion = "0.7.0"
66+
tokio = { version = "1.47", features = ["full"] }
67+
async-std = { version = "1.13", features = ["attributes", "tokio1"] }
68+
clap = { version = "4.5", features = ["derive"] }
69+
rand = { version = "0.9", features = ["small_rng"] }
70+
quickcheck = "1.0"
71+
criterion = "0.7"
7172

7273
[lib]
7374
name = "minio"

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ use minio::s3::response::BucketExistsResponse;
2424
2525
#[tokio::main]
2626
async fn main() {
27-
let client: Client = Default::default(); // configure your client
28-
27+
let client = Client::create_client_on_localhost().unwrap(); // configure your client here
28+
2929
let exists: BucketExistsResponse = client
3030
.bucket_exists("my-bucket")
3131
.send()

benches/s3/bench_bucket_exists.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ pub(crate) fn bench_bucket_exists(criterion: &mut Criterion) {
2323
"bucket_exists",
2424
criterion,
2525
|| async { Ctx2::new().await },
26-
|ctx| BucketExists::new(ctx.client.clone(), ctx.bucket.clone()),
26+
|ctx| {
27+
BucketExists::builder()
28+
.client(ctx.client.clone())
29+
.bucket(ctx.bucket.clone())
30+
.build()
31+
},
2732
);
2833
}

benches/s3/bench_bucket_lifecycle.rs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@ pub(crate) fn bench_put_bucket_lifecycle(criterion: &mut Criterion) {
2727
|| async { Ctx2::new().await },
2828
|ctx| {
2929
let config = create_bucket_lifecycle_config_examples();
30-
PutBucketLifecycle::new(ctx.client.clone(), ctx.bucket.clone())
30+
PutBucketLifecycle::builder()
31+
.client(ctx.client.clone())
32+
.bucket(ctx.bucket.clone())
3133
.life_cycle_config(config)
34+
.build()
3235
},
3336
)
3437
}
@@ -42,19 +45,30 @@ pub(crate) fn bench_get_bucket_lifecycle(criterion: &mut Criterion) {
4245
ctx.client
4346
.put_bucket_lifecycle(&ctx.bucket)
4447
.life_cycle_config(config)
48+
.build()
4549
.send()
4650
.await
4751
.unwrap();
4852
ctx
4953
},
50-
|ctx| GetBucketLifecycle::new(ctx.client.clone(), ctx.bucket.clone()),
54+
|ctx| {
55+
GetBucketLifecycle::builder()
56+
.client(ctx.client.clone())
57+
.bucket(ctx.bucket.clone())
58+
.build()
59+
},
5160
)
5261
}
5362
pub(crate) fn bench_delete_bucket_lifecycle(criterion: &mut Criterion) {
5463
benchmark_s3_api(
5564
"delete_bucket_lifecycle",
5665
criterion,
5766
|| async { Ctx2::new().await },
58-
|ctx| DeleteBucketLifecycle::new(ctx.client.clone(), ctx.bucket.clone()),
67+
|ctx| {
68+
DeleteBucketLifecycle::builder()
69+
.client(ctx.client.clone())
70+
.bucket(ctx.bucket.clone())
71+
.build()
72+
},
5973
)
6074
}

benches/s3/bench_bucket_notification.rs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@ pub(crate) fn bench_put_bucket_notification(criterion: &mut Criterion) {
2828
|| async { Ctx2::new().await },
2929
|ctx| {
3030
let config = create_bucket_notification_config_example();
31-
PutBucketNotification::new(ctx.client.clone(), ctx.bucket.clone())
31+
PutBucketNotification::builder()
32+
.client(ctx.client.clone())
33+
.bucket(ctx.bucket.clone())
3234
.notification_config(config)
35+
.build()
3336
},
3437
)
3538
}
@@ -44,12 +47,18 @@ pub(crate) fn bench_get_bucket_notification(criterion: &mut Criterion) {
4447
ctx.client
4548
.put_bucket_notification(&ctx.bucket)
4649
.notification_config(config)
50+
.build()
4751
.send()
4852
.await
4953
.unwrap();
5054
ctx
5155
},
52-
|ctx| GetBucketNotification::new(ctx.client.clone(), ctx.bucket.clone()),
56+
|ctx| {
57+
GetBucketNotification::builder()
58+
.client(ctx.client.clone())
59+
.bucket(ctx.bucket.clone())
60+
.build()
61+
},
5362
)
5463
}
5564
#[allow(dead_code)]
@@ -58,6 +67,11 @@ pub(crate) fn bench_delete_bucket_notification(criterion: &mut Criterion) {
5867
"delete_bucket_notification",
5968
criterion,
6069
|| async { Ctx2::new().await },
61-
|ctx| DeleteBucketNotification::new(ctx.client.clone(), ctx.bucket.clone()),
70+
|ctx| {
71+
DeleteBucketNotification::builder()
72+
.client(ctx.client.clone())
73+
.bucket(ctx.bucket.clone())
74+
.build()
75+
},
6276
)
6377
}

benches/s3/bench_bucket_policy.rs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ pub(crate) fn bench_put_bucket_policy(criterion: &mut Criterion) {
2727
|| async { Ctx2::new().await },
2828
|ctx| {
2929
let config = create_bucket_policy_config_example(&ctx.bucket);
30-
PutBucketPolicy::new(ctx.client.clone(), ctx.bucket.clone()).config(config)
30+
PutBucketPolicy::builder()
31+
.client(ctx.client.clone())
32+
.bucket(ctx.bucket.clone())
33+
.config(config)
34+
.build()
3135
},
3236
)
3337
}
@@ -38,21 +42,34 @@ pub(crate) fn bench_get_bucket_policy(criterion: &mut Criterion) {
3842
|| async {
3943
let ctx = Ctx2::new().await;
4044
let config = create_bucket_policy_config_example(&ctx.bucket);
41-
PutBucketPolicy::new(ctx.client.clone(), ctx.bucket.clone())
45+
PutBucketPolicy::builder()
46+
.client(ctx.client.clone())
47+
.bucket(ctx.bucket.clone())
4248
.config(config)
49+
.build()
4350
.send()
4451
.await
4552
.unwrap();
4653
ctx
4754
},
48-
|ctx| GetBucketPolicy::new(ctx.client.clone(), ctx.bucket.clone()),
55+
|ctx| {
56+
GetBucketPolicy::builder()
57+
.client(ctx.client.clone())
58+
.bucket(ctx.bucket.clone())
59+
.build()
60+
},
4961
)
5062
}
5163
pub(crate) fn bench_delete_bucket_policy(criterion: &mut Criterion) {
5264
benchmark_s3_api(
5365
"delete_bucket_policy",
5466
criterion,
5567
|| async { Ctx2::new().await },
56-
|ctx| DeleteBucketPolicy::new(ctx.client.clone(), ctx.bucket.clone()),
68+
|ctx| {
69+
DeleteBucketPolicy::builder()
70+
.client(ctx.client.clone())
71+
.bucket(ctx.bucket.clone())
72+
.build()
73+
},
5774
)
5875
}

benches/s3/bench_bucket_replication.rs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ pub(crate) fn bench_put_bucket_replication(criterion: &mut Criterion) {
3636
.client
3737
.put_bucket_versioning(&ctx.bucket)
3838
.versioning_status(VersioningStatus::Enabled)
39+
.build()
3940
.send()
4041
.await
4142
.unwrap();
@@ -44,6 +45,7 @@ pub(crate) fn bench_put_bucket_replication(criterion: &mut Criterion) {
4445
.client
4546
.put_bucket_versioning(ctx.aux_bucket.clone().unwrap())
4647
.versioning_status(VersioningStatus::Enabled)
48+
.build()
4749
.send()
4850
.await
4951
.unwrap();
@@ -53,8 +55,11 @@ pub(crate) fn bench_put_bucket_replication(criterion: &mut Criterion) {
5355
|ctx| {
5456
let config =
5557
create_bucket_replication_config_example(ctx.aux_bucket.clone().unwrap().as_str());
56-
PutBucketReplication::new(ctx.client.clone(), ctx.bucket.clone())
58+
PutBucketReplication::builder()
59+
.client(ctx.client.clone())
60+
.bucket(ctx.bucket.clone())
5761
.replication_config(config)
62+
.build()
5863
},
5964
)
6065
}
@@ -71,6 +76,7 @@ pub(crate) fn bench_get_bucket_replication(criterion: &mut Criterion) {
7176
.client
7277
.put_bucket_versioning(&ctx.bucket)
7378
.versioning_status(VersioningStatus::Enabled)
79+
.build()
7480
.send()
7581
.await
7682
.unwrap();
@@ -79,13 +85,19 @@ pub(crate) fn bench_get_bucket_replication(criterion: &mut Criterion) {
7985
.client
8086
.put_bucket_versioning(ctx.aux_bucket.clone().unwrap())
8187
.versioning_status(VersioningStatus::Enabled)
88+
.build()
8289
.send()
8390
.await
8491
.unwrap();
8592

8693
ctx
8794
},
88-
|ctx| GetBucketReplication::new(ctx.client.clone(), ctx.bucket.clone()),
95+
|ctx| {
96+
GetBucketReplication::builder()
97+
.client(ctx.client.clone())
98+
.bucket(ctx.bucket.clone())
99+
.build()
100+
},
89101
)
90102
}
91103
#[allow(dead_code)]
@@ -101,6 +113,7 @@ pub(crate) fn bench_delete_bucket_replication(criterion: &mut Criterion) {
101113
.client
102114
.put_bucket_versioning(&ctx.bucket)
103115
.versioning_status(VersioningStatus::Enabled)
116+
.build()
104117
.send()
105118
.await
106119
.unwrap();
@@ -109,12 +122,18 @@ pub(crate) fn bench_delete_bucket_replication(criterion: &mut Criterion) {
109122
.client
110123
.put_bucket_versioning(ctx.aux_bucket.clone().unwrap())
111124
.versioning_status(VersioningStatus::Enabled)
125+
.build()
112126
.send()
113127
.await
114128
.unwrap();
115129

116130
ctx
117131
},
118-
|ctx| DeleteBucketReplication::new(ctx.client.clone(), ctx.bucket.clone()),
132+
|ctx| {
133+
DeleteBucketReplication::builder()
134+
.client(ctx.client.clone())
135+
.bucket(ctx.bucket.clone())
136+
.build()
137+
},
119138
)
120139
}

benches/s3/bench_bucket_tagging.rs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,11 @@ pub(crate) async fn bench_put_bucket_tagging(criterion: &mut Criterion) {
2929
criterion,
3030
|| async { Ctx2::new().await },
3131
|ctx| {
32-
PutBucketTagging::new(ctx.client.clone(), ctx.bucket.clone())
32+
PutBucketTagging::builder()
33+
.client(ctx.client.clone())
34+
.bucket(ctx.bucket.clone())
3335
.tags(create_tags_example())
36+
.build()
3437
},
3538
)
3639
}
@@ -46,12 +49,18 @@ pub(crate) async fn bench_get_bucket_tagging(criterion: &mut Criterion) {
4649
ctx.client
4750
.put_bucket_tagging(&ctx.bucket)
4851
.tags(create_tags_example())
52+
.build()
4953
.send()
5054
.await
5155
.unwrap();
5256
ctx
5357
},
54-
|ctx| GetBucketTagging::new(ctx.client.clone(), ctx.bucket.clone()),
58+
|ctx| {
59+
GetBucketTagging::builder()
60+
.client(ctx.client.clone())
61+
.bucket(ctx.bucket.clone())
62+
.build()
63+
},
5564
)
5665
}
5766
pub(crate) async fn bench_delete_bucket_tagging(criterion: &mut Criterion) {
@@ -62,6 +71,11 @@ pub(crate) async fn bench_delete_bucket_tagging(criterion: &mut Criterion) {
6271
"delete_bucket_tagging",
6372
criterion,
6473
|| async { Ctx2::new().await },
65-
|ctx| DeleteBucketTagging::new(ctx.client.clone(), ctx.bucket.clone()),
74+
|ctx| {
75+
DeleteBucketTagging::builder()
76+
.client(ctx.client.clone())
77+
.bucket(ctx.bucket.clone())
78+
.build()
79+
},
6680
)
6781
}

0 commit comments

Comments
 (0)