Skip to content

Commit 492a83b

Browse files
authored
Merge pull request #979 from Killerjunior/feat/metrics-swagger-ui
feat(metrics): mount the swagger-ui route in server.rs
2 parents 11c00de + 642741d commit 492a83b

3 files changed

Lines changed: 22 additions & 1 deletion

File tree

metrics/Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

metrics/src/rate_limit.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
//! is exceeded.
99
1010
use std::{
11+
collections::VecDeque,
1112
net::SocketAddr,
12-
sync::Arc,
13+
sync::{Arc, Mutex},
1314
time::{Duration, Instant},
1415
};
1516

metrics/src/server.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ use axum::{
2222
use prometheus::{Encoder, Registry, TextEncoder};
2323
use std::net::SocketAddr;
2424
use tracing::{info, info_span, Instrument};
25+
use utoipa::OpenApi;
26+
use utoipa_swagger_ui::SwaggerUi;
2527

2628
use crate::auth::AuthConfig;
2729
use crate::logging::new_request_id;
@@ -47,6 +49,7 @@ pub async fn serve(listen: String, registry: Registry, limiter: RateLimiter) ->
4749
let nonce_cache = NonceCache::new(replay_config);
4850

4951
let app = Router::new()
52+
.merge(SwaggerUi::new("/swagger-ui").url("/api-docs/openapi.json", ApiDoc::openapi()))
5053
.route("/metrics", get(metrics_handler))
5154
.route("/health", get(health_handler))
5255
.route("/ready", get(ready_handler))
@@ -209,6 +212,7 @@ mod tests {
209212

210213
let state = AppState { registry };
211214
Router::new()
215+
.merge(SwaggerUi::new("/swagger-ui").url("/api-docs/openapi.json", ApiDoc::openapi()))
212216
.route("/metrics", get(metrics_handler))
213217
.route("/health", get(health_handler))
214218
.with_state(state)
@@ -360,4 +364,19 @@ mod tests {
360364
.unwrap();
361365
assert_eq!(response.status(), StatusCode::OK);
362366
}
367+
368+
#[tokio::test]
369+
async fn test_swagger_ui_returns_non_404() {
370+
let app = make_app();
371+
let response = app
372+
.oneshot(
373+
Request::builder()
374+
.uri("/swagger-ui/")
375+
.body(Body::empty())
376+
.unwrap(),
377+
)
378+
.await
379+
.unwrap();
380+
assert_ne!(response.status(), StatusCode::NOT_FOUND);
381+
}
363382
}

0 commit comments

Comments
 (0)