diff --git a/crates/handlers/src/health.rs b/crates/handlers/src/health.rs index 4e1f33a1..5f8729de 100644 --- a/crates/handlers/src/health.rs +++ b/crates/handlers/src/health.rs @@ -1,4 +1,4 @@ -// Copyright 2021 The Matrix.org Foundation C.I.C. +// Copyright 2021, 2022 The Matrix.org Foundation C.I.C. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,36 +12,20 @@ // See the License for the specific language governing permissions and // limitations under the License. -use hyper::header::CONTENT_TYPE; -use mas_warp_utils::{ - errors::WrapError, - filters::{self, database::connection}, -}; -use mime::TEXT_PLAIN; -use sqlx::{pool::PoolConnection, PgPool, Postgres}; +use axum::{extract::Extension, response::IntoResponse}; +use mas_axum_utils::{internal_error, FancyError}; +use sqlx::PgPool; use tracing::{info_span, Instrument}; -use warp::{filters::BoxedFilter, reply::with_header, Filter, Rejection, Reply}; -pub fn filter(pool: &PgPool) -> BoxedFilter<(Box,)> { - warp::path!("health") - .and(filters::trace::name("GET /health")) - .and(warp::get()) - .and(connection(pool)) - .and_then(get) - .boxed() -} +pub async fn get(Extension(pool): Extension) -> Result { + let mut conn = pool.acquire().await.map_err(internal_error)?; -async fn get(mut conn: PoolConnection) -> Result, Rejection> { sqlx::query("SELECT $1") .bind(1_i64) .execute(&mut conn) .instrument(info_span!("DB health")) .await - .wrap_error()?; + .map_err(internal_error)?; - Ok(Box::new(with_header( - "ok", - CONTENT_TYPE, - TEXT_PLAIN.to_string(), - ))) + Ok("ok") } diff --git a/crates/handlers/src/lib.rs b/crates/handlers/src/lib.rs index 1a3f3677..e963efa1 100644 --- a/crates/handlers/src/lib.rs +++ b/crates/handlers/src/lib.rs @@ -34,7 +34,7 @@ mod health; mod oauth2; mod views; -use self::{health::filter as health, oauth2::filter as oauth2, views::filter as views}; +use self::{oauth2::filter as oauth2, views::filter as views}; #[must_use] pub fn root( @@ -45,7 +45,6 @@ pub fn root( mailer: &Mailer, config: &RootConfig, ) -> BoxedFilter<(impl Reply,)> { - let health = health(pool); let oauth2 = oauth2(pool, templates, key_store, encrypter, &config.http); let views = views( pool, @@ -56,7 +55,7 @@ pub fn root( &config.csrf, ); - let filter = health.or(views).unify().or(oauth2); + let filter = views.or(oauth2); filter.with(warp::log(module_path!())).boxed() } @@ -72,6 +71,7 @@ pub fn router( ) -> Router { Router::new() .route("/", get(self::views::index::get)) + .route("/health", get(self::health::get)) .fallback(mas_static_files::Assets) .layer(Extension(pool.clone())) .layer(Extension(templates.clone()))