git.iko.soy/typeable/servant-swagger-ui
on master help sign in
Allow custom servers for the Swagger spec file
commit3fd3d83ad991d19b6d5ee89e5cec7f69c7c4ad2a authorEnis Bayramoğlu <enisbayramoglu@gmail.com> dateTue 19 Mar 2019, 10:39 (8 years ago) parentb442c67
11 files changed+55−11
servant-swagger-ui-core/Changelog.md+4 servant-swagger-ui-core/servant-swagger-ui-core.cabal+1−2 servant-swagger-ui-core/src/Servant/Swagger/UI/Core.hs+10−1 servant-swagger-ui-jensoleg/servant-swagger-ui-jensoleg.cabal+2−3 servant-swagger-ui-jensoleg/src/Servant/Swagger/UI/JensOleG.hs+7 servant-swagger-ui-redoc/CHANGELOG.md+3 servant-swagger-ui-redoc/servant-swagger-ui-redoc.cabal+2−3 servant-swagger-ui-redoc/src/Servant/Swagger/UI/ReDoc.hs+8 servant-swagger-ui/CHANGELOG.md+4 servant-swagger-ui/servant-swagger-ui.cabal+2−2 servant-swagger-ui/src/Servant/Swagger/UI.hs+12
servant-swagger-ui-core/Changelog.md+4
@@ -1,3 +1,7 @@
1+# 0.3.3
2+
3+- Add `swaggerSchemaUIServerImpl'`
4+
15# 0.3.1
26
37- Support `servant-0.14`
servant-swagger-ui-core/servant-swagger-ui-core.cabal+1−2
@@ -1,7 +1,6 @@
11cabal-version: 1.12
22name: servant-swagger-ui-core
3−version: 0.3.2
4−x-revision: 5
3+version: 0.3.3
54synopsis: Servant swagger ui core components
65category: Web, Servant, Swagger
76description:
servant-swagger-ui-core/src/Servant/Swagger/UI/Core.hs+10−1
@@ -42,6 +42,7 @@ module Servant.Swagger.UI.Core (
4242 -- * Implementation details
4343 SwaggerUiHtml(..),
4444 swaggerSchemaUIServerImpl,
45+ swaggerSchemaUIServerImpl',
4546 Handler,
4647 ) where
4748
@@ -103,7 +104,15 @@ swaggerSchemaUIServerImpl
103104 :: (Server api ~ Handler Swagger)
104105 => T.Text -> [(FilePath, ByteString)]
105106 -> Swagger -> Server (SwaggerSchemaUI' dir api)
106−swaggerSchemaUIServerImpl indexTemplate files swagger = return swagger
107+swaggerSchemaUIServerImpl indexTemplate files swagger
108+ = swaggerSchemaUIServerImpl' indexTemplate files $ return swagger
109+
110+-- | Use a custom server to serve the Swagger spec source.
111+swaggerSchemaUIServerImpl'
112+ :: T.Text -> [(FilePath, ByteString)]
113+ -> Server api -> Server (SwaggerSchemaUI' dir api)
114+swaggerSchemaUIServerImpl' indexTemplate files server
115+ = server
107116 :<|> return (SwaggerUiHtml indexTemplate)
108117 :<|> return (SwaggerUiHtml indexTemplate)
109118 :<|> rest
servant-swagger-ui-jensoleg/servant-swagger-ui-jensoleg.cabal+2−3
@@ -1,7 +1,6 @@
11cabal-version: 1.12
22name: servant-swagger-ui-jensoleg
3−version: 0.3.2
4−x-revision: 3
3+version: 0.3.3
54synopsis: Servant swagger ui: Jens-Ole Graulund theme
65category: Web, Servant, Swagger
76description:
@@ -79,7 +78,7 @@ source-repository head
7978library
8079 hs-source-dirs: src
8180 ghc-options: -Wall
82− build-depends: servant-swagger-ui-core >=0.3.2 && <0.4
81+ build-depends: servant-swagger-ui-core >=0.3.3 && <0.4
8382 build-depends:
8483 base >=4.7 && <4.13
8584 , bytestring >=0.10.4.0 && <0.11
servant-swagger-ui-jensoleg/src/Servant/Swagger/UI/JensOleG.hs+7
@@ -46,6 +46,7 @@ module Servant.Swagger.UI.JensOleG (
4646 SwaggerSchemaUI,
4747 SwaggerSchemaUI',
4848 jensolegSwaggerSchemaUIServer,
49+ jensolegSwaggerSchemaUIServer',
4950
5051 -- ** ReDoc theme
5152 jensolegIndexTemplate,
@@ -71,6 +72,12 @@ jensolegSwaggerSchemaUIServer
7172jensolegSwaggerSchemaUIServer =
7273 swaggerSchemaUIServerImpl jensolegIndexTemplate jensolegFiles
7374
75+-- | Use a custom server to serve the Swagger spec source.
76+jensolegSwaggerSchemaUIServer'
77+ :: Server api -> Server (SwaggerSchemaUI' dir api)
78+jensolegSwaggerSchemaUIServer' =
79+ swaggerSchemaUIServerImpl' jensolegIndexTemplate jensolegFiles
80+
7481jensolegIndexTemplate :: Text
7582jensolegIndexTemplate = $(embedText "jensoleg.index.html.tmpl")
7683
servant-swagger-ui-redoc/CHANGELOG.md+3
@@ -1,3 +1,6 @@
1+- 0.3.3.1.22.2
2+ - Add `swaggerSchemaUIServer'`
3+
14- 0.3.2.1.22.2
25 - Update to ReDoc-1.22.2
36 - Add GHC-8.6 support
servant-swagger-ui-redoc/servant-swagger-ui-redoc.cabal+2−3
@@ -1,7 +1,6 @@
11cabal-version: 1.12
22name: servant-swagger-ui-redoc
3−version: 0.3.2.1.22.2
4−x-revision: 3
3+version: 0.3.3.1.22.2
54synopsis: Servant swagger ui: ReDoc theme
65category: Web, Servant, Swagger
76description:
@@ -33,7 +32,7 @@ source-repository head
3332library
3433 hs-source-dirs: src
3534 ghc-options: -Wall
36− build-depends: servant-swagger-ui-core >=0.3.2 && <0.4
35+ build-depends: servant-swagger-ui-core >=0.3.3 && <0.4
3736 build-depends:
3837 base >=4.7 && <4.13
3938 , bytestring >=0.10.4.0 && <0.11
servant-swagger-ui-redoc/src/Servant/Swagger/UI/ReDoc.hs+8
@@ -46,6 +46,7 @@ module Servant.Swagger.UI.ReDoc (
4646 SwaggerSchemaUI,
4747 SwaggerSchemaUI',
4848 redocSchemaUIServer,
49+ redocSchemaUIServer',
4950
5051 -- ** ReDoc theme
5152 redocIndexTemplate,
@@ -69,6 +70,13 @@ redocSchemaUIServer
6970redocSchemaUIServer =
7071 swaggerSchemaUIServerImpl redocIndexTemplate redocFiles
7172
73+-- | Use a custom server to serve the Swagger spec source.
74+redocSchemaUIServer'
75+ :: Server api -> Server (SwaggerSchemaUI' dir api)
76+redocSchemaUIServer' =
77+ swaggerSchemaUIServerImpl' redocIndexTemplate redocFiles
78+
79+
7280redocIndexTemplate :: Text
7381redocIndexTemplate = $(embedText "redoc.index.html.tmpl")
7482
servant-swagger-ui/CHANGELOG.md+4
@@ -1,3 +1,7 @@
1+- 0.3.3.3.22.2
2+ - Update to `swagger-ui-3.22.2`
3+ - Add `swaggerSchemaUIServer'`
4+
15- 0.3.2.3.19.3
26 - Update to `swagger-ui-3.19.3`
37 - Add GHC-8.6 support
servant-swagger-ui/servant-swagger-ui.cabal+2−2
@@ -1,6 +1,6 @@
11cabal-version: 1.12
22name: servant-swagger-ui
3−version: 0.3.2.3.22.2
3+version: 0.3.3.3.22.2
44synopsis: Servant swagger ui
55category: Web, Servant, Swagger
66description:
@@ -37,7 +37,7 @@ source-repository head
3737library
3838 hs-source-dirs: src
3939 ghc-options: -Wall
40− build-depends: servant-swagger-ui-core ==0.3.*
40+ build-depends: servant-swagger-ui-core >=0.3.3 && <0.4
4141 build-depends:
4242 base >=4.7 && <4.13
4343 , bytestring >=0.10.4.0 && <0.11
servant-swagger-ui/src/Servant/Swagger/UI.hs+12
@@ -46,6 +46,7 @@ module Servant.Swagger.UI (
4646 SwaggerSchemaUI,
4747 SwaggerSchemaUI',
4848 swaggerSchemaUIServer,
49+ swaggerSchemaUIServer',
4950
5051 -- ** Official swagger ui
5152 swaggerUiIndexTemplate,
@@ -71,6 +72,17 @@ swaggerSchemaUIServer
7172swaggerSchemaUIServer =
7273 swaggerSchemaUIServerImpl swaggerUiIndexTemplate swaggerUiFiles
7374
75+-- | Use a custom server to serve the Swagger spec source.
76+--
77+-- This allows even more control over how the spec source is served.
78+-- It allows, for instance, serving the spec source with authentication,
79+-- customizing the response based on the client or serving a swagger.yaml
80+-- instead.
81+swaggerSchemaUIServer'
82+ :: Server api -> Server (SwaggerSchemaUI' dir api)
83+swaggerSchemaUIServer' =
84+ swaggerSchemaUIServerImpl' swaggerUiIndexTemplate swaggerUiFiles
85+
7486swaggerUiIndexTemplate :: Text
7587swaggerUiIndexTemplate = $(embedText "index.html.tmpl")
7688