Skip to content

Commit 3ffce33

Browse files
authored
Upgrade SwaggerUI to version 5.17.14 and allow assets URLs to be configured via Plug options (#628)
1 parent 3773ece commit 3ffce33

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

lib/open_api_spex/plug/swagger_ui.ex

+17-3
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,17 @@ defmodule OpenApiSpex.Plug.SwaggerUI do
3030
resources "/users", MyAppWeb.UserController, only: [:index, :create, :show]
3131
get "/openapi", OpenApiSpex.Plug.RenderSpec, :show
3232
end
33+
34+
# Use a different Swagger UI version
35+
scope "/" do
36+
pipe_through :browser
37+
38+
get "/swaggerui", OpenApiSpex.Plug.SwaggerUI,
39+
path: "/api/openapi",
40+
swagger_ui_js_bundle_url: "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.14.0/swagger-ui-bundle.js",
41+
swagger_ui_js_standalone_preset_url: "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.14.0/swagger-ui-standalone-preset.js",
42+
swagger_ui_css_url: "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.14.0/swagger-ui.css"
43+
end
3344
"""
3445
@behaviour Plug
3546

@@ -40,7 +51,7 @@ defmodule OpenApiSpex.Plug.SwaggerUI do
4051
<head>
4152
<meta charset="UTF-8">
4253
<title>Swagger UI</title>
43-
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.14.0/swagger-ui.css" >
54+
<link rel="stylesheet" type="text/css" href="<%= config[:swagger_ui_css_url] || "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/5.17.14/swagger-ui.css" %>" >
4455
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
4556
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
4657
<%= if style_src_nonce do %>
@@ -70,8 +81,8 @@ defmodule OpenApiSpex.Plug.SwaggerUI do
7081
<body>
7182
<div id="swagger-ui"></div>
7283
73-
<script src="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.14.0/swagger-ui-bundle.js" charset="UTF-8"> </script>
74-
<script src="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.14.0/swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
84+
<script src="<%= config[:swagger_ui_js_bundle_url] || "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/5.17.14/swagger-ui-bundle.js" %>" charset="UTF-8"> </script>
85+
<script src="<%= config[:swagger_ui_js_standalone_preset_url] || "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/5.17.14/swagger-ui-standalone-preset.js" %>" charset="UTF-8"> </script>
7586
<%= if script_src_nonce do %>
7687
<script nonce="<%= script_src_nonce %>">
7788
<% else %>
@@ -147,6 +158,9 @@ defmodule OpenApiSpex.Plug.SwaggerUI do
147158
for assets. Supports either `atom()` or a map of type
148159
`%{optional(:script) => atom(), optional(:style) => atom()}`. You will probably
149160
want to set this on the `SwaggerUIOAuth2Redirect` plug as well.
161+
* `:swagger_ui_js_bundle_url` - Optional. An URL to SwaggerUI JavaScript bundle.
162+
* `:swagger_ui_js_standalone_preset_url` - Optional. An URL to SwaggerUI JavaScript Standalone Preset.
163+
* `:swagger_ui_css_url` - Optional. An URL to SwaggerUI CSS bundle.
150164
* all other opts - forwarded to the `SwaggerUIBundle` constructor
151165
152166
## Example

0 commit comments

Comments
 (0)