upstream_rs/models/upstream/
app_config.rs1use crate::models::common::enums::CompressionLevel;
2use crate::services::trust::{CosignPublicKey, MinisignPublicKey, TrustedSignatureKeys};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize, Default)]
6#[serde(default)]
7pub struct ProviderConfig {
8 pub api_token: Option<String>,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize, Default)]
12#[serde(default)]
13pub struct MinisignKeyConfig {
14 pub id: Option<String>,
15 pub key: String,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize, Default)]
19#[serde(default)]
20pub struct TrustConfig {
21 pub minisign_public_keys: Vec<MinisignKeyConfig>,
22 pub cosign_public_keys: Vec<CosignKeyConfig>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, Default)]
26#[serde(default)]
27pub struct CosignKeyConfig {
28 pub id: Option<String>,
29 pub key: String,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
33#[serde(default)]
34pub struct RollbackConfig {
35 pub compression_level: CompressionLevel,
36 pub stored_artifacts: u32,
37}
38
39impl Default for RollbackConfig {
40 fn default() -> Self {
41 Self {
42 compression_level: CompressionLevel::None,
43 stored_artifacts: 1,
44 }
45 }
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize, Default)]
49#[serde(default)]
50pub struct AppConfig {
51 pub github: ProviderConfig,
52 pub gitlab: ProviderConfig,
53 pub gitea: ProviderConfig,
54 pub trust: TrustConfig,
55 pub rollback: RollbackConfig,
56}
57
58impl AppConfig {
59 pub fn trusted_signature_keys(&self) -> TrustedSignatureKeys {
60 let minisign_public_keys = self
61 .trust
62 .minisign_public_keys
63 .iter()
64 .map(|k| MinisignPublicKey {
65 id: k.id.clone(),
66 key: k.key.clone(),
67 })
68 .collect();
69
70 let cosign_public_keys = self
71 .trust
72 .cosign_public_keys
73 .iter()
74 .map(|k| CosignPublicKey {
75 id: k.id.clone(),
76 key: k.key.clone(),
77 })
78 .collect();
79
80 TrustedSignatureKeys {
81 minisign_public_keys,
82 cosign_public_keys,
83 }
84 }
85}