Crates.io | warp_subdomain |
lib.rs | warp_subdomain |
version | 1.2.0 |
source | src |
created_at | 2022-08-09 08:29:01.052397 |
updated_at | 2022-08-10 07:43:33.736986 |
description | A simple subdomain parser for Warp web server framework with nano second processing time. |
homepage | |
repository | https://github.com/mochamadsatria/warp_subdomain |
max_upload_size | |
id | 641640 |
size | 6,847 |
A simple subdomain parser middleware for Warp web server framework with nano second processing time. 🚀🚀
... warp route
.and(warp_subdomain::with_subdomain)`
... route handler
use std::collections::HashMap;
use std::sync::Arc;
use warp::Filter;
use warp_subdomain::with_subdomain;
async fn query(
_query: HashMap<String, String>,
subdomain: Arc<Vec<String>>,
) -> Result<impl warp::Reply, warp::Rejection> {
// get last subdomain
let subdomain_0 = subdomain.get(0);
Ok(warp::reply::with_status(
subdomain_0.unwrap().to_string(),
warp::http::StatusCode::FOUND,
))
}
#[tokio::main]
async fn main() {
let route = warp::path!("home")
.and(warp::get())
.and(warp::query::<HashMap<String, String>>())
.and(with_subdomain())
.and_then(query);
warp::serve(route).run(([127, 0, 0, 1], 3030)).await
}
/// If host eg. super-alloy.api.cilen.com.
/// This middleware will return
vec!["super-alloy", "api"]
/// This middleware also works for localhost that have port in host header.
/// eg. api.localhost:3999
This middlewares will return value with type Arc<Vec<String>>