From 5ab4e3a22129059a49520e8e76d4b1ff200a3a30 Mon Sep 17 00:00:00 2001 From: famfo Date: Sat, 15 Jan 2022 14:50:47 +0100 Subject: [PATCH] Rewrote DB webserver to use warp --- src/web_service.rs | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/src/web_service.rs b/src/web_service.rs index 7a3c720..e68663f 100644 --- a/src/web_service.rs +++ b/src/web_service.rs @@ -1,29 +1,26 @@ use crate::ExecutorConnection; -use hyper::service::{make_service_fn, service_fn}; -use hyper::{Body, Request, Response, Server}; -use std::convert::Infallible; use std::net::SocketAddr; -use std::sync::Arc; +use warp::Filter; pub async fn run(db: ExecutorConnection, listen: SocketAddr) -> anyhow::Result<()> { - let db = Arc::new(db); + let db_filter = warp::any().map(move || db.clone()); + let filter = warp::any().and(db_filter).and_then(handle); - Server::bind(&listen) - .serve(make_service_fn(|_| { - let db = Arc::clone(&db); - async move { Ok::<_, Infallible>(service_fn(move |r| handle(r, Arc::clone(&db)))) } - })) - .await?; + warp::serve(filter).run(listen).await; Ok(()) } -async fn handle( - _req: Request, - db: Arc, -) -> Result, Infallible> { - Ok(Response::new(Body::from(format!( - "{:?}", - db.get_quote(None).await - )))) +async fn handle(db: ExecutorConnection) -> Result { + if let Some((a, b)) = db.get_quote(None).await { + Ok(warp::reply::with_status( + format!("{} {}", a, b), + warp::http::StatusCode::OK, + )) + } else { + Ok(warp::reply::with_status( + format!("None"), + warp::http::StatusCode::NO_CONTENT, + )) + } }