/
http.rs
41 lines (31 loc) · 1 KB
/
http.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use anyhow::Result;
use color_eyre::Report;
use hyper::Server;
use safepkt_backend::app::middleware;
use safepkt_backend::app::router;
use safepkt_backend::infra::signal_handling;
use std::env;
use std::net::SocketAddr;
use tracing::{error, info};
#[tokio::main]
async fn main() -> Result<(), Report> {
middleware::logger::setup()?;
dotenv::dotenv().ok();
let host = env::var("HOST")?;
let port = env::var("PORT")?;
let host_ip_address = host.as_str();
let port = port.as_str();
let hostname_port = format!("{}:{}", host_ip_address, port);
let addr: SocketAddr = hostname_port.as_str().parse()?;
let router = router::new_router().unwrap();
info!(
"About to listen to address {} and port {}",
host_ip_address, port
);
let server = Server::bind(&addr).serve(router);
let graceful = server.with_graceful_shutdown(signal_handling::handle_shutdown_signal());
if let Err(e) = graceful.await {
error!("server error: {}", e);
}
Ok(())
}