From 532cc431d1c5ca1ffcf429a4ccb94edc7848fe7a Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 30 May 2024 00:09:11 +0200 Subject: rename filters dir --- src/filters/hosts.rs | 45 --------------------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 src/filters/hosts.rs (limited to 'src/filters/hosts.rs') diff --git a/src/filters/hosts.rs b/src/filters/hosts.rs deleted file mode 100644 index 286d478..0000000 --- a/src/filters/hosts.rs +++ /dev/null @@ -1,45 +0,0 @@ -use super::{Node, NodeContext, NodeKind, NodeRequest, NodeResponse}; -use crate::{config::DynNode, error::ServiceError}; -use futures::Future; -use hyper::header::HOST; -use serde::Deserialize; -use serde_yaml::Value; -use std::{collections::HashMap, pin::Pin, sync::Arc}; - -#[derive(Deserialize)] -#[serde(transparent)] -struct Hosts(HashMap); - -pub struct HostsKind; -impl NodeKind for HostsKind { - fn name(&self) -> &'static str { - "hosts" - } - fn instanciate(&self, config: Value) -> anyhow::Result> { - Ok(Arc::new(serde_yaml::from_value::(config)?)) - } -} -impl Node for Hosts { - fn handle<'a>( - &'a self, - context: &'a mut NodeContext, - request: NodeRequest, - ) -> Pin> + Send + Sync + 'a>> { - Box::pin(async move { - let host = request - .headers() - .get(HOST) - .and_then(|e| e.to_str().ok()) - .ok_or(ServiceError::NoHost)?; - - let host = remove_port(&host); - let node = self.0.get(host).ok_or(ServiceError::UnknownHost)?; - - node.handle(context, request).await - }) - } -} - -pub fn remove_port(s: &str) -> &str { - s.split_once(":").map(|(s, _)| s).unwrap_or(s) -} -- cgit v1.2.3-70-g09d2