2022-01-05 17:23:00 -06:00
|
|
|
use crate::ExecutorConnection;
|
2022-01-13 10:52:39 -06:00
|
|
|
use hyper::service::{make_service_fn, service_fn};
|
|
|
|
use hyper::{Body, Request, Response, Server};
|
2022-01-05 17:23:00 -06:00
|
|
|
use std::convert::Infallible;
|
2022-01-13 10:52:39 -06:00
|
|
|
use std::net::SocketAddr;
|
2022-01-05 17:23:00 -06:00
|
|
|
use std::sync::Arc;
|
|
|
|
|
|
|
|
pub async fn run(db: ExecutorConnection, listen: SocketAddr) -> anyhow::Result<()> {
|
|
|
|
let db = Arc::new(db);
|
|
|
|
|
2022-01-13 10:52:39 -06:00
|
|
|
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?;
|
2022-01-05 17:23:00 -06:00
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
2022-01-13 10:52:39 -06:00
|
|
|
async fn handle(
|
|
|
|
_req: Request<Body>,
|
|
|
|
db: Arc<ExecutorConnection>,
|
|
|
|
) -> Result<Response<Body>, Infallible> {
|
|
|
|
Ok(Response::new(Body::from(format!(
|
|
|
|
"{:?}",
|
|
|
|
db.get_quote(None).await
|
|
|
|
))))
|
2022-01-05 17:23:00 -06:00
|
|
|
}
|