use axum::http::status::StatusCode; use crate::DigResult; use crate::IpResult; use crate::config::DnsResolverConfig; use crate::mycelium::MycView; #[derive(serde::Serialize, Clone)] #[serde(untagged)] pub enum View { Asn { asn: u32 }, Dig { query: String, result: DigResult }, DnsResolver{ config: DnsResolverConfig }, DnsResolverList, Index { result: IpResult, user_agent: Option }, Ip { result: IpResult }, Message{ title: String, message: String }, #[serde(rename="404")] NotFound, } impl MycView for View { fn get_template_name(&self) -> String { match self { View::Asn{..} => "asn", View::Dig{..} => "dig", View::DnsResolver{..} => "dns_resolver", View::DnsResolverList => "dns_resolver_list", View::Index{..} => "index", View::Ip{..} => "ip", View::Message{..} => "message", View::NotFound => "404", }.to_string() } fn get_status_code(&self) -> StatusCode { match self { Self::NotFound => StatusCode::NOT_FOUND, _ => StatusCode::OK, } } }