1#[macro_use]
6extern crate slog_scope;
7
8pub mod dockerflow;
9pub mod error;
10pub mod routes;
11#[cfg(test)]
12mod test;
13
14use actix_web::web;
15
16#[macro_export]
17macro_rules! build_app {
18 ($app_state: expr_2021, $config: expr_2021) => {
19 actix_web::App::new()
20 .app_data(actix_web::web::Data::new($app_state.clone()))
21 .wrap(actix_web::middleware::ErrorHandlers::new().handler(
22 actix_http::StatusCode::NOT_FOUND,
23 autopush_common::errors::render_404,
24 ))
25 .wrap(autopush_common::middleware::sentry::SentryWrapper::<
26 $crate::error::ApiError,
27 >::new(
28 $app_state.metrics.clone(),
29 "error".to_owned(),
30 $app_state.settings.disable_sentry,
31 ))
32 .configure($config)
33 };
34}
35
36pub fn config(cfg: &mut web::ServiceConfig) {
38 cfg
39 .route("/", web::get().to(routes::ws_route))
41 .service(web::scope("").configure(dockerflow::config));
42}
43
44pub fn config_router(cfg: &mut web::ServiceConfig) {
46 cfg.service(web::resource("/push/{uaid}").route(web::put().to(routes::push_route)))
47 .service(web::resource("/notif/{uaid}").route(web::put().to(routes::check_storage_route)))
48 .service(web::scope("").configure(dockerflow::config));
49}