diff options
Diffstat (limited to 'crates/api-base/src')
| -rw-r--r-- | crates/api-base/src/health/apidoc.rs | 12 | ||||
| -rw-r--r-- | crates/api-base/src/health/mod.rs | 27 | ||||
| -rw-r--r-- | crates/api-base/src/lib.rs | 3 | ||||
| -rw-r--r-- | crates/api-base/src/version.rs | 45 |
4 files changed, 0 insertions, 87 deletions
diff --git a/crates/api-base/src/health/apidoc.rs b/crates/api-base/src/health/apidoc.rs deleted file mode 100644 index 45b8754..0000000 --- a/crates/api-base/src/health/apidoc.rs +++ /dev/null @@ -1,12 +0,0 @@ -use utoipa::OpenApi; - -use crate::Version; - -#[derive(OpenApi)] -#[openapi( - tags( - (name = "sellershut", description = "API health check"), - ), - components(schemas(Version)) -)] -pub struct ApiDocBase; diff --git a/crates/api-base/src/health/mod.rs b/crates/api-base/src/health/mod.rs deleted file mode 100644 index a84dc85..0000000 --- a/crates/api-base/src/health/mod.rs +++ /dev/null @@ -1,27 +0,0 @@ -#[cfg(feature = "utoipa")] -mod apidoc; - -#[cfg(feature = "utoipa")] -pub use apidoc::*; - -#[derive(Default)] -pub struct BaseService; - -impl HealthDriver for BaseService {} - -pub trait HealthDriver: Send + Sync { - fn health(&self, app: &str, version: &str) -> String { - format!("{app} v{version} is live") - } -} - -#[cfg(test)] -mod tests { - use crate::health::{BaseService, HealthDriver}; - - #[test] - fn health() { - let app = BaseService.health(env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")); - assert!(app.contains("is live")); - } -} diff --git a/crates/api-base/src/lib.rs b/crates/api-base/src/lib.rs deleted file mode 100644 index 9c632e0..0000000 --- a/crates/api-base/src/lib.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod health; -mod version; -pub use version::*; diff --git a/crates/api-base/src/version.rs b/crates/api-base/src/version.rs deleted file mode 100644 index 0652c6e..0000000 --- a/crates/api-base/src/version.rs +++ /dev/null @@ -1,45 +0,0 @@ -#[derive(Debug)] -#[cfg_attr( - feature = "utoipa", - derive(utoipa::ToSchema, serde::Deserialize, serde::Serialize), - schema(example = "v0"), - serde(rename_all = "lowercase") -)] -pub enum Version { - V0, -} - -#[cfg(feature = "axum")] -mod request { - use super::*; - use axum::RequestPartsExt; - use axum::extract::{FromRequestParts, Path}; - use axum::http::StatusCode; - use axum::http::request::Parts; - use axum::response::{IntoResponse, Response}; - use std::collections::HashMap; - - impl<S> FromRequestParts<S> for Version - where - S: Send + Sync, - { - type Rejection = Response; - - async fn from_request_parts( - parts: &mut Parts, - _state: &S, - ) -> Result<Self, Self::Rejection> { - let params: Path<HashMap<String, String>> = - parts.extract().await.map_err(IntoResponse::into_response)?; - - let version = params - .get("apiVersion") - .ok_or_else(|| (StatusCode::NOT_FOUND, "version param missing").into_response())?; - - match version.as_str() { - "v0" => Ok(Version::V0), - _ => Err((StatusCode::NOT_FOUND, "unknown version").into_response()), - } - } - } -} |
