1use provcfg::{ClapArgs, Configurable};
2use serde::{Deserialize, Serialize};
3use utoipa::ToSchema;
4
5#[derive(Debug, Deserialize, Serialize, Eq, PartialEq, Clone, Configurable, ClapArgs, ToSchema)]
6#[serde(default)]
7#[configurable(clap_prefix = "s3")]
8pub struct S3 {
9 pub enabled: bool,
10
11 pub access_key: Option<String>,
12
13 #[configurable(secret)]
14 pub secret_key: Option<String>,
15
16 pub region: Option<String>,
17
18 pub endpoint: Option<String>,
19
20 pub allow_http: bool,
21
22 pub crates_bucket: String,
23
24 pub cratesio_bucket: String,
25
26 pub toolchain_bucket: String,
27
28 pub docs_bucket: Option<String>,
29
30 #[arg(long = "s3-connect-timeout")]
32 pub connect_timeout_seconds: u64,
33
34 #[arg(long = "s3-request-timeout")]
36 pub request_timeout_seconds: u64,
37}
38
39impl Default for S3 {
40 fn default() -> Self {
41 Self {
42 enabled: false,
43 access_key: None,
44 secret_key: None,
45 region: None,
46 endpoint: None,
47 allow_http: true,
48 crates_bucket: "kellnr-crates".to_string(),
49 cratesio_bucket: "kellnr-cratesio".to_string(),
50 toolchain_bucket: "kellnr-toolchains".to_string(),
51 docs_bucket: None,
52 connect_timeout_seconds: 5,
53 request_timeout_seconds: 30,
54 }
55 }
56}