mirror of
https://codeberg.org/slatian/service.echoip-slatecave.git
synced 2025-02-22 06:54:11 +01:00
46 lines
1011 B
Rust
46 lines
1011 B
Rust
|
|
||
|
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<String> },
|
||
|
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,
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|