Extract endpoints and wire up new ones
This commit is contained in:
parent
985f9ebf3f
commit
5d533f6da9
3 changed files with 30 additions and 17 deletions
|
|
@ -1,17 +1,16 @@
|
||||||
pub mod auth;
|
pub mod auth;
|
||||||
mod device_id_header;
|
mod device_id_header;
|
||||||
mod endpoints;
|
mod endpoints;
|
||||||
mod requests;
|
pub(crate) mod requests;
|
||||||
mod responses;
|
pub(crate) mod responses;
|
||||||
|
|
||||||
use anyhow::{Context as _, Result, anyhow};
|
use anyhow::{Context as _, Result};
|
||||||
use auth::auth_middleware;
|
use auth::auth_middleware;
|
||||||
use axum::{
|
use axum::{
|
||||||
Router,
|
Router,
|
||||||
extract::{DefaultBodyLimit, Request},
|
extract::{DefaultBodyLimit, Request},
|
||||||
http::{self, HeaderValue, Method},
|
http::{self, HeaderValue, Method},
|
||||||
middleware,
|
middleware,
|
||||||
response::IntoResponse,
|
|
||||||
routing::{IntoMakeService, get},
|
routing::{IntoMakeService, get},
|
||||||
};
|
};
|
||||||
use device_id_header::DEVICE_ID_HEADER_NAME;
|
use device_id_header::DEVICE_ID_HEADER_NAME;
|
||||||
|
|
@ -32,7 +31,6 @@ use tracing::{Level, info_span};
|
||||||
use crate::{
|
use crate::{
|
||||||
app_state::AppState,
|
app_state::AppState,
|
||||||
config::{Config, server_config::ServerConfig},
|
config::{Config, server_config::ServerConfig},
|
||||||
errors::{client_error, not_found_error},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pub async fn create_server(config: Config) -> Result<()> {
|
pub async fn create_server(config: Config) -> Result<()> {
|
||||||
|
|
@ -85,8 +83,8 @@ pub async fn create_server(config: Config) -> Result<()> {
|
||||||
.on_failure(DefaultOnFailure::new().level(Level::ERROR)),
|
.on_failure(DefaultOnFailure::new().level(Level::ERROR)),
|
||||||
)
|
)
|
||||||
.with_state(app_state)
|
.with_state(app_state)
|
||||||
.fallback(handle_404)
|
.fallback(endpoints::not_found::not_found)
|
||||||
.fallback(handle_405)
|
.method_not_allowed_fallback(endpoints::method_not_allowed::method_not_allowed)
|
||||||
.into_make_service();
|
.into_make_service();
|
||||||
|
|
||||||
start_server(app, &server_config).await
|
start_server(app, &server_config).await
|
||||||
|
|
@ -95,9 +93,14 @@ pub async fn create_server(config: Config) -> Result<()> {
|
||||||
fn get_authed_routes(app_state: AppState) -> Router<AppState> {
|
fn get_authed_routes(app_state: AppState) -> Router<AppState> {
|
||||||
Router::new()
|
Router::new()
|
||||||
.route(
|
.route(
|
||||||
"/vaults/:vault_id/documents",
|
"/vaults/:vault_id/manifest",
|
||||||
get(endpoints::fetch_latest_documents::fetch_latest_documents),
|
get(endpoints::get_manifest::get_manifest).put(endpoints::put_manifest::put_manifest),
|
||||||
)
|
)
|
||||||
|
.route(
|
||||||
|
"/vaults/:vault_id/state",
|
||||||
|
get(endpoints::snapshot::snapshot),
|
||||||
|
)
|
||||||
|
.route("/vaults/:vault_id/events", get(endpoints::events::events))
|
||||||
.route(
|
.route(
|
||||||
"/vaults/:vault_id/documents/:document_id",
|
"/vaults/:vault_id/documents/:document_id",
|
||||||
get(endpoints::fetch_latest_document_version::fetch_latest_document_version)
|
get(endpoints::fetch_latest_document_version::fetch_latest_document_version)
|
||||||
|
|
@ -153,11 +156,3 @@ async fn shutdown_signal() {
|
||||||
() = terminate => {},
|
() = terminate => {},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn handle_404() -> impl IntoResponse {
|
|
||||||
not_found_error(anyhow!("Page not found"))
|
|
||||||
}
|
|
||||||
|
|
||||||
async fn handle_405() -> impl IntoResponse {
|
|
||||||
client_error(anyhow!("Method not allowed"))
|
|
||||||
}
|
|
||||||
|
|
|
||||||
9
sync-server/src/server/endpoints/method_not_allowed.rs
Normal file
9
sync-server/src/server/endpoints/method_not_allowed.rs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
use anyhow::anyhow;
|
||||||
|
use axum::response::IntoResponse;
|
||||||
|
|
||||||
|
use crate::errors::client_error;
|
||||||
|
|
||||||
|
#[axum::debug_handler]
|
||||||
|
pub async fn method_not_allowed() -> impl IntoResponse {
|
||||||
|
client_error(anyhow!("Method not allowed"))
|
||||||
|
}
|
||||||
9
sync-server/src/server/endpoints/not_found.rs
Normal file
9
sync-server/src/server/endpoints/not_found.rs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
use anyhow::anyhow;
|
||||||
|
use axum::response::IntoResponse;
|
||||||
|
|
||||||
|
use crate::errors::not_found_error;
|
||||||
|
|
||||||
|
#[axum::debug_handler]
|
||||||
|
pub async fn not_found() -> impl IntoResponse {
|
||||||
|
not_found_error(anyhow!("Page not found"))
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue