2021-01-11 10:01:48 +00:00
|
|
|
use crate::email_client::EmailClient;
|
2020-09-27 16:09:42 +00:00
|
|
|
use crate::routes::{health_check, subscribe};
|
|
|
|
use actix_web::dev::Server;
|
|
|
|
use actix_web::web::Data;
|
|
|
|
use actix_web::{web, App, HttpServer};
|
|
|
|
use sqlx::PgPool;
|
|
|
|
use std::net::TcpListener;
|
|
|
|
use tracing_actix_web::TracingLogger;
|
|
|
|
|
2021-01-11 10:01:48 +00:00
|
|
|
pub fn run(
|
|
|
|
listener: TcpListener,
|
|
|
|
db_pool: PgPool,
|
|
|
|
email_client: EmailClient,
|
|
|
|
) -> Result<Server, std::io::Error> {
|
2020-09-27 16:09:42 +00:00
|
|
|
let db_pool = Data::new(db_pool);
|
2021-01-11 10:01:48 +00:00
|
|
|
let email_client = Data::new(email_client);
|
2020-09-27 16:09:42 +00:00
|
|
|
let server = HttpServer::new(move || {
|
|
|
|
App::new()
|
|
|
|
.wrap(TracingLogger)
|
|
|
|
.route("/health_check", web::get().to(health_check))
|
|
|
|
.route("/subscriptions", web::post().to(subscribe))
|
|
|
|
.app_data(db_pool.clone())
|
2021-01-11 10:01:48 +00:00
|
|
|
.app_data(email_client.clone())
|
2020-09-27 16:09:42 +00:00
|
|
|
})
|
|
|
|
.listen(listener)?
|
|
|
|
.run();
|
|
|
|
Ok(server)
|
|
|
|
}
|