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, $config: expr) => {
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(), "error".to_owned()
29 ))
30 .configure($config)
31 };
32}
33
34pub fn config(cfg: &mut web::ServiceConfig) {
36 cfg
37 .route("/", web::get().to(routes::ws_route))
39 .service(web::scope("").configure(dockerflow::config));
40}
41
42pub fn config_router(cfg: &mut web::ServiceConfig) {
44 cfg.service(web::resource("/push/{uaid}").route(web::put().to(routes::push_route)))
45 .service(web::resource("/notif/{uaid}").route(web::put().to(routes::check_storage_route)))
46 .service(web::scope("").configure(dockerflow::config));
47}