use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use serde::{Deserialize, Serialize};
use url::Url;
use crate::config::Tsl;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Network {
#[serde(default = "Network::default_base_url")]
pub base_url: Option<Url>,
#[serde(default = "Network::default_bind_address")]
pub bind_address: SocketAddr,
#[serde(default = "Network::default_tsl")]
pub tsl: Option<Tsl>,
}
impl Default for Network {
fn default() -> Self {
Self {
bind_address: Self::default_bind_address(),
base_url: Self::default_base_url(),
tsl: Self::default_tsl(),
}
}
}
impl Network {
fn default_bind_address() -> SocketAddr {
SocketAddr::new(Self::default_ip(), Self::default_port())
}
fn default_ip() -> IpAddr {
IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0))
}
fn default_port() -> u16 {
3001
}
fn default_base_url() -> Option<Url> {
None
}
fn default_tsl() -> Option<Tsl> {
None
}
}