From 9614323ad0087898775400f5bbb081436b8614d9 Mon Sep 17 00:00:00 2001 From: Florian Dieminger Date: Mon, 24 Jul 2023 10:10:04 +0200 Subject: [PATCH] feat(info): add an info endpoint (#301) * feat(info): add an info endpoint Co-authored-by: Leo McArdle --- src/api/api_v1.rs | 2 ++ src/api/info.rs | 15 +++++++++++++++ src/api/mod.rs | 1 + 3 files changed, 18 insertions(+) create mode 100644 src/api/info.rs diff --git a/src/api/api_v1.rs b/src/api/api_v1.rs index 846fc47c..84670abe 100644 --- a/src/api/api_v1.rs +++ b/src/api/api_v1.rs @@ -1,4 +1,5 @@ use crate::api::ai::{ask, explain, explain_feedback, quota}; +use crate::api::info::information; use crate::api::newsletter::{ is_subscribed, subscribe_anonymous_handler, subscribe_handler, unsubscribe_handler, }; @@ -16,6 +17,7 @@ pub fn api_v1_service() -> impl HttpServiceFactory { // limit request payload size to 1MB .limit(1_048_576); web::scope("/api/v1") + .service(web::resource("/info").route(web::get().to(information))) .service( web::scope("/plus") .service( diff --git a/src/api/info.rs b/src/api/info.rs new file mode 100644 index 00000000..74f5ffcb --- /dev/null +++ b/src/api/info.rs @@ -0,0 +1,15 @@ +use actix_web::HttpResponse; +use serde::Serialize; + +#[derive(Serialize)] +struct Info { + version: &'static str, +} + +const INFO: Info = Info { + version: env!("CARGO_PKG_VERSION"), +}; + +pub async fn information() -> HttpResponse { + HttpResponse::Ok().json(INFO) +} diff --git a/src/api/mod.rs b/src/api/mod.rs index 8ad5067c..e96541af 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -7,6 +7,7 @@ pub mod elastic; pub mod error; pub mod fxa_webhook; pub mod healthz; +pub mod info; pub mod newsletter; pub mod ping; pub mod play;