|
|
|
@ -11,6 +11,7 @@ use std::{future::Future, io, net::SocketAddr, sync::Arc, time::Duration};
|
|
|
|
|
|
|
|
|
|
use axum::{
|
|
|
|
|
extract::{FromRequest, MatchedPath},
|
|
|
|
|
handler::Handler,
|
|
|
|
|
response::IntoResponse,
|
|
|
|
|
routing::{get, on, MethodFilter},
|
|
|
|
|
Router,
|
|
|
|
@ -22,10 +23,13 @@ use figment::{
|
|
|
|
|
};
|
|
|
|
|
use http::{
|
|
|
|
|
header::{self, HeaderName},
|
|
|
|
|
Method,
|
|
|
|
|
Method, Uri,
|
|
|
|
|
};
|
|
|
|
|
use opentelemetry::trace::{FutureExt, Tracer};
|
|
|
|
|
use ruma::{api::IncomingRequest, Outgoing};
|
|
|
|
|
use ruma::{
|
|
|
|
|
api::{client::error::ErrorKind, IncomingRequest},
|
|
|
|
|
Outgoing,
|
|
|
|
|
};
|
|
|
|
|
use tokio::{signal, sync::RwLock};
|
|
|
|
|
use tower::ServiceBuilder;
|
|
|
|
|
use tower_http::{
|
|
|
|
@ -321,6 +325,7 @@ fn routes() -> Router {
|
|
|
|
|
.ruma_route(server_server::get_profile_information_route)
|
|
|
|
|
.ruma_route(server_server::get_keys_route)
|
|
|
|
|
.ruma_route(server_server::claim_keys_route)
|
|
|
|
|
.fallback(not_found.into_service())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async fn shutdown_signal(handle: ServerHandle) {
|
|
|
|
@ -349,6 +354,10 @@ async fn shutdown_signal(handle: ServerHandle) {
|
|
|
|
|
handle.graceful_shutdown(Some(Duration::from_secs(30)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async fn not_found(_uri: Uri) -> impl IntoResponse {
|
|
|
|
|
Error::BadRequest(ErrorKind::NotFound, "Unknown or unimplemented route")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trait RouterExt {
|
|
|
|
|
fn ruma_route<H, T>(self, handler: H) -> Self
|
|
|
|
|
where
|
|
|
|
|