Skip to content

Commit 6c02fce

Browse files
committed
fix: simplify config
1 parent 9fcda0b commit 6c02fce

File tree

3 files changed

+34
-41
lines changed

3 files changed

+34
-41
lines changed

src/api/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ pub struct Api<H, P, S> {
2424
}
2525

2626
pub async fn new(
27-
Listener(http, http_proxy): Listener,
28-
Listener(https, https_proxy): Listener,
29-
Listener(prom, prom_proxy): Listener,
27+
(http, http_proxy): Listener,
28+
(https, https_proxy): Listener,
29+
(prom, prom_proxy): Listener,
3030
pool: PgPool,
3131
) -> Result<
3232
Api<

src/config/listener.rs

Lines changed: 28 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -26,49 +26,39 @@ impl Default for ProxyProtocol {
2626
}
2727
}
2828

29-
#[derive(Debug, Clone)]
30-
pub struct Listener(pub Option<String>, pub ProxyProtocol);
29+
pub type Listener = (Option<String>, ProxyProtocol);
3130

32-
impl<'de> Deserialize<'de> for Listener {
33-
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
34-
where
35-
D: Deserializer<'de>,
36-
{
37-
struct ListenerVisitor;
38-
impl<'de> Visitor<'de> for ListenerVisitor {
39-
type Value = Listener;
31+
pub(super) fn deserialize<'de, D>(deserializer: D) -> Result<Listener, D::Error>
32+
where
33+
D: Deserializer<'de>,
34+
{
35+
struct ListenerVisitor;
36+
impl<'de> Visitor<'de> for ListenerVisitor {
37+
type Value = Listener;
4038

41-
fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result {
42-
formatter.write_str("Listener")
43-
}
44-
45-
fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
46-
where
47-
E: serde::de::Error,
48-
{
49-
Ok(Listener(
50-
String::from(value).into(),
51-
ProxyProtocol::Disabled,
52-
))
53-
}
39+
fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result {
40+
formatter.write_str("Listener")
41+
}
5442

55-
fn visit_none<E>(self) -> Result<Self::Value, E>
56-
where
57-
E: serde::de::Error,
58-
{
59-
Ok(Listener(None, ProxyProtocol::Disabled))
60-
}
43+
fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
44+
where
45+
E: serde::de::Error,
46+
{
47+
Ok((
48+
String::from(value).into(),
49+
ProxyProtocol::Disabled,
50+
))
51+
}
6152

62-
fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
63-
where
64-
A: SeqAccess<'de>,
65-
{
66-
let listener = seq.next_element::<String>()?;
67-
let proxy = seq.next_element::<ProxyProtocol>()?.unwrap_or_default();
53+
fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
54+
where
55+
A: SeqAccess<'de>,
56+
{
57+
let listener = seq.next_element::<String>()?;
58+
let proxy = seq.next_element::<ProxyProtocol>()?.unwrap_or_default();
6859

69-
Ok(Listener(listener, proxy))
70-
}
60+
Ok((listener, proxy))
7161
}
72-
deserializer.deserialize_any(ListenerVisitor)
7362
}
63+
deserializer.deserialize_any(ListenerVisitor)
7464
}

src/config/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@ mod records;
1212

1313
#[derive(Deserialize, Debug)]
1414
pub struct Api {
15+
#[serde(default, deserialize_with = "listener::deserialize")]
1516
pub http: Listener,
17+
#[serde(default, deserialize_with = "listener::deserialize")]
1618
pub https: Listener,
19+
#[serde(default, deserialize_with = "listener::deserialize")]
1720
pub prom: Listener,
1821
}
1922

0 commit comments

Comments
 (0)