@@ -30,6 +30,17 @@ defmodule OpenApiSpex.Plug.SwaggerUI do
30
30
resources "/users", MyAppWeb.UserController, only: [:index, :create, :show]
31
31
get "/openapi", OpenApiSpex.Plug.RenderSpec, :show
32
32
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
33
44
"""
34
45
@ behaviour Plug
35
46
@@ -40,7 +51,7 @@ defmodule OpenApiSpex.Plug.SwaggerUI do
40
51
<head>
41
52
<meta charset="UTF-8">
42
53
<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" %> " >
44
55
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
45
56
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
46
57
<%= if style_src_nonce do %>
@@ -70,8 +81,8 @@ defmodule OpenApiSpex.Plug.SwaggerUI do
70
81
<body>
71
82
<div id="swagger-ui"></div>
72
83
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>
75
86
<%= if script_src_nonce do %>
76
87
<script nonce="<%= script_src_nonce %>">
77
88
<% else %>
@@ -147,6 +158,9 @@ defmodule OpenApiSpex.Plug.SwaggerUI do
147
158
for assets. Supports either `atom()` or a map of type
148
159
`%{optional(:script) => atom(), optional(:style) => atom()}`. You will probably
149
160
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.
150
164
* all other opts - forwarded to the `SwaggerUIBundle` constructor
151
165
152
166
## Example
0 commit comments