Skip to main content

kellnr_settings/
s3.rs

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    /// S3 connect timeout in seconds
31    #[arg(long = "s3-connect-timeout")]
32    pub connect_timeout_seconds: u64,
33
34    /// S3 request timeout in seconds
35    #[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}