kellnr_settings/
origin.rs1use clap_serde_derive::ClapSerde;
2use serde::{Deserialize, Serialize};
3
4use crate::protocol::Protocol;
5
6fn default_hostname() -> String {
7 "127.0.0.1".to_string()
8}
9
10fn default_origin_port() -> u16 {
11 std::env::var("KELLNR_ORIGIN__PORT")
12 .ok()
13 .and_then(|v| v.parse::<u16>().ok())
14 .unwrap_or(8000)
15}
16
17#[derive(Debug, Deserialize, Serialize, Eq, PartialEq, Clone, ClapSerde)]
18#[serde(default)]
19pub struct Origin {
20 #[default(default_hostname())]
22 #[arg(id = "origin-hostname", long = "origin-hostname")]
23 pub hostname: String,
24
25 #[default(default_origin_port())]
27 #[arg(id = "origin-port", long = "origin-port")]
28 pub port: u16,
29
30 #[default(Protocol::Http)]
32 #[arg(skip)]
33 pub protocol: Protocol,
34
35 #[default(String::new())]
37 #[arg(id = "origin-path", long = "origin-path")]
38 pub path: String,
39}