mirror of
https://codeberg.org/slatian/service.echoip-slatecave.git
synced 2025-07-21 00:06:03 +02:00
First step to detaching the templating from the logic.
This commit is contained in:
45
src/view.rs
Normal file
45
src/view.rs
Normal file
@ -0,0 +1,45 @@
|
||||
|
||||
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,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user