gooty_proxy/config/
schema.rs1use serde::{Deserialize, Serialize};
23
24#[derive(Debug, Clone, Serialize, Deserialize, Default)]
26pub struct AppConfig {
27 #[serde(default)]
29 pub application: ApplicationConfig,
30
31 #[serde(default)]
33 pub http: HttpConfig,
34
35 #[serde(default)]
37 pub judge: JudgeConfig,
38
39 #[serde(default)]
41 pub proxies: ProxiesConfig,
42
43 #[serde(default)]
45 pub storage: StorageConfig,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct ApplicationConfig {
51 pub log_level: String,
53}
54
55impl Default for ApplicationConfig {
56 fn default() -> Self {
57 Self {
58 log_level: "info".to_string(),
59 }
60 }
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
65pub struct HttpConfig {
66 pub request_timeout_secs: u64,
68
69 pub request_retries: u32,
71
72 pub request_delay_ms: u64,
74}
75
76impl Default for HttpConfig {
77 fn default() -> Self {
78 Self {
79 request_timeout_secs: 30,
80 request_retries: 3,
81 request_delay_ms: 500,
82 }
83 }
84}
85
86#[derive(Debug, Clone, Serialize, Deserialize)]
88pub struct JudgeConfig {
89 pub parallel_validations: usize,
91
92 pub max_acceptable_latency_ms: u32,
94}
95
96impl Default for JudgeConfig {
97 fn default() -> Self {
98 Self {
99 parallel_validations: 20,
100 max_acceptable_latency_ms: 2000,
101 }
102 }
103}
104
105#[derive(Debug, Clone, Serialize, Deserialize)]
107pub struct ProxiesConfig {
108 pub min_success_rate: f64,
110}
111
112impl Default for ProxiesConfig {
113 fn default() -> Self {
114 Self {
115 min_success_rate: 0.7,
116 }
117 }
118}
119
120#[derive(Debug, Clone, Serialize, Deserialize)]
122pub struct StorageConfig {
123 pub data_dir: String,
125
126 pub create_defaults_if_missing: bool,
128
129 pub auto_save_interval_secs: u64,
131
132 pub pretty_print: bool,
134}
135
136impl Default for StorageConfig {
137 fn default() -> Self {
138 Self {
139 data_dir: "data".to_string(),
140 create_defaults_if_missing: true,
141 auto_save_interval_secs: 300,
142 pretty_print: true,
143 }
144 }
145}