Line data Source code
1 : pub mod routes;
2 : use std::sync::Arc;
3 :
4 : pub use routes::make_router;
5 : pub use safekeeper_api::models;
6 : use tokio_util::sync::CancellationToken;
7 :
8 : use crate::{GlobalTimelines, SafeKeeperConf};
9 :
10 0 : pub async fn task_main_http(
11 0 : conf: Arc<SafeKeeperConf>,
12 0 : http_listener: std::net::TcpListener,
13 0 : global_timelines: Arc<GlobalTimelines>,
14 0 : ) -> anyhow::Result<()> {
15 0 : let router = make_router(conf, global_timelines)
16 0 : .build()
17 0 : .map_err(|err| anyhow::anyhow!(err))?;
18 :
19 0 : let service = Arc::new(
20 0 : http_utils::RequestServiceBuilder::new(router).map_err(|err| anyhow::anyhow!(err))?,
21 : );
22 0 : let server = http_utils::server::Server::new(service, http_listener, None)?;
23 0 : server.serve(CancellationToken::new()).await?;
24 0 : Ok(()) // unreachable
25 0 : }
26 :
27 0 : pub async fn task_main_https(
28 0 : conf: Arc<SafeKeeperConf>,
29 0 : https_listener: std::net::TcpListener,
30 0 : tls_config: Arc<rustls::ServerConfig>,
31 0 : global_timelines: Arc<GlobalTimelines>,
32 0 : ) -> anyhow::Result<()> {
33 0 : let tls_acceptor = tokio_rustls::TlsAcceptor::from(tls_config);
34 :
35 0 : let router = make_router(conf, global_timelines)
36 0 : .build()
37 0 : .map_err(|err| anyhow::anyhow!(err))?;
38 :
39 0 : let service = Arc::new(
40 0 : http_utils::RequestServiceBuilder::new(router).map_err(|err| anyhow::anyhow!(err))?,
41 : );
42 0 : let server = http_utils::server::Server::new(service, https_listener, Some(tls_acceptor))?;
43 0 : server.serve(CancellationToken::new()).await?;
44 0 : Ok(()) // unreachable
45 0 : }
|