diff --git a/Cargo.lock b/Cargo.lock index cde0a34..c638230 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -57,6 +57,8 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", + "serde_json", + "serde_path_to_error", "sync_wrapper 1.0.1", "tokio", "tower", @@ -439,6 +441,12 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + [[package]] name = "serde" version = "1.0.204" @@ -459,6 +467,27 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_json" +version = "1.0.120" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + [[package]] name = "signal-hook-registry" version = "1.4.2" @@ -621,6 +650,7 @@ name = "webhook_bridge" version = "0.0.1" dependencies = [ "axum", + "serde", "tokio", ] diff --git a/Cargo.toml b/Cargo.toml index 907e3ee..c86ea83 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,8 @@ include = [ [dependencies] # default form, http1, json, matched-path, original-uri, query, tokio, tower-log, tracing -axum = { version = "0.7.5", default-features = false, features = ["tokio", "http1", "http2"] } +axum = { version = "0.7.5", default-features = false, features = ["tokio", "http1", "http2", "json"] } +serde = { version = "1.0.204", features = ["derive"] } tokio = { version = "1.38.0", default-features = false, features = ["macros", "process", "rt", "rt-multi-thread"] } [profile.release-lto] diff --git a/src/main.rs b/src/main.rs index aa8594f..7ce5922 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,8 @@ +use axum::http::StatusCode; use axum::routing::get; +use axum::Json; use axum::Router; +use serde::Serialize; #[tokio::main] async fn main() -> Result<(), Box> { @@ -11,6 +14,11 @@ async fn main() -> Result<(), Box> { Ok(()) } -async fn health() -> &'static str { - "ok" +async fn health() -> (StatusCode, Json) { + (StatusCode::OK, Json(HealthResponse { ok: true })) +} + +#[derive(Serialize)] +struct HealthResponse { + ok: bool, }