From a9c417d1d11fb96eaea9191518f4be6513aab5c3 Mon Sep 17 00:00:00 2001 From: aecsocket Date: Tue, 7 Apr 2026 23:14:26 +0100 Subject: [PATCH] Switch from Swagger to Scalar for OpenAPI docs (#5766) * Switch from Swagger to Scalar for OpenAPI docs * remove old comments --- Cargo.lock | 69 +++------------------------------------ Cargo.toml | 2 +- apps/labrinth/Cargo.toml | 2 +- apps/labrinth/src/main.rs | 6 ++-- 4 files changed, 8 insertions(+), 71 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 32e948366..2072ef3b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4973,7 +4973,7 @@ dependencies = [ "urlencoding", "utoipa", "utoipa-actix-web", - "utoipa-swagger-ui", + "utoipa-scalar", "uuid 1.18.1", "validator", "webp", @@ -7950,40 +7950,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rust-embed" -version = "8.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb44e1917075637ee8c7bcb865cf8830e3a92b5b1189e44e3a0ab5a0d5be314b" -dependencies = [ - "rust-embed-impl", - "rust-embed-utils", - "walkdir", -] - -[[package]] -name = "rust-embed-impl" -version = "8.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382499b49db77a7c19abd2a574f85ada7e9dbe125d5d1160fa5cad7c4cf71fc9" -dependencies = [ - "proc-macro2", - "quote", - "rust-embed-utils", - "syn 2.0.106", - "walkdir", -] - -[[package]] -name = "rust-embed-utils" -version = "8.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21fcbee55c2458836bcdbfffb6ec9ba74bbc23ca7aa6816015a3dd2c4d8fc185" -dependencies = [ - "sha2", - "walkdir", -] - [[package]] name = "rust-ini" version = "0.21.3" @@ -11199,30 +11165,17 @@ dependencies = [ ] [[package]] -name = "utoipa-swagger-ui" -version = "9.0.2" +name = "utoipa-scalar" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d047458f1b5b65237c2f6dc6db136945667f40a7668627b3490b9513a3d43a55" +checksum = "59559e1509172f6b26c1cdbc7247c4ddd1ac6560fe94b584f81ee489b141f719" dependencies = [ "actix-web", - "base64 0.22.1", - "mime_guess", - "regex", - "rust-embed", "serde", "serde_json", - "url", "utoipa", - "utoipa-swagger-ui-vendored", - "zip 3.0.0", ] -[[package]] -name = "utoipa-swagger-ui-vendored" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2eebbbfe4093922c2b6734d7c679ebfebd704a0d7e56dfcb0d05818ce28977d" - [[package]] name = "uuid" version = "0.8.2" @@ -12607,20 +12560,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "zip" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12598812502ed0105f607f941c386f43d441e00148fce9dec3ca5ffb0bde9308" -dependencies = [ - "arbitrary", - "crc32fast", - "flate2", - "indexmap 2.11.4", - "memchr", - "zopfli", -] - [[package]] name = "zip" version = "4.6.1" diff --git a/Cargo.toml b/Cargo.toml index 236d953c4..54865d6d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -208,7 +208,7 @@ url = "2.5.7" urlencoding = "2.1.3" utoipa = { version = "5.4.0", features = ["actix_extras", "chrono", "decimal"] } utoipa-actix-web = { version = "0.1.2" } -utoipa-swagger-ui = { version = "9.0.2", features = ["actix-web", "vendored"] } +utoipa-scalar = { version = "0.3.0", default-features = false } uuid = "1.18.1" validator = "0.20.0" webp = { version = "0.3.1", default-features = false } diff --git a/apps/labrinth/Cargo.toml b/apps/labrinth/Cargo.toml index d977d57c6..81840f5ac 100644 --- a/apps/labrinth/Cargo.toml +++ b/apps/labrinth/Cargo.toml @@ -127,7 +127,7 @@ url = { workspace = true } urlencoding = { workspace = true } utoipa = { workspace = true, features = ["url"] } utoipa-actix-web = { workspace = true } -utoipa-swagger-ui = { workspace = true } +utoipa-scalar = { workspace = true, features = ["actix-web"] } uuid = { workspace = true, features = ["fast-rng", "serde", "v4"] } validator = { workspace = true, features = ["derive"] } webp = { workspace = true } diff --git a/apps/labrinth/src/main.rs b/apps/labrinth/src/main.rs index 0522e757e..5dd3366b6 100644 --- a/apps/labrinth/src/main.rs +++ b/apps/labrinth/src/main.rs @@ -23,7 +23,7 @@ use tracing_actix_web::TracingLogger; use utoipa::OpenApi; use utoipa::openapi::security::{ApiKey, ApiKeyValue, SecurityScheme}; use utoipa_actix_web::AppExt; -use utoipa_swagger_ui::SwaggerUi; +use utoipa_scalar::Servable; #[cfg(target_os = "linux")] #[global_allocator] @@ -260,9 +260,7 @@ async fn app() -> std::io::Result<()> { // Use `utoipa` for OpenAPI generation .into_utoipa_app() .configure(|cfg| utoipa_app_config(cfg, labrinth_config.clone())) - .openapi_service(|api| SwaggerUi::new("/docs/swagger-ui/{_:.*}") - .config(utoipa_swagger_ui::Config::default().try_it_out_enabled(true)) - .url("/docs/openapi.json", ApiDoc::openapi().merge_from(api))) + .openapi_service(|api| utoipa_scalar::Scalar::with_url("/docs", ApiDoc::openapi().merge_from(api))) .into_app() .configure(|cfg| app_config(cfg, labrinth_config.clone())) })