Skip to main content

kellnr_settings/
origin.rs

1use 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    /// External hostname for URLs
21    #[default(default_hostname())]
22    #[arg(id = "origin-hostname", long = "origin-hostname")]
23    pub hostname: String,
24
25    /// External port for URLs
26    #[default(default_origin_port())]
27    #[arg(id = "origin-port", long = "origin-port")]
28    pub port: u16,
29
30    /// Protocol (http or https)
31    #[default(Protocol::Http)]
32    #[arg(skip)]
33    pub protocol: Protocol,
34
35    /// URL path prefix
36    #[default(String::new())]
37    #[arg(id = "origin-path", long = "origin-path")]
38    pub path: String,
39}