Skip to content

Commit 906a7ea

Browse files
authored
Merge pull request #82 from haskell-servant/generalize-server-t
Lift restriction of swagger spec delivery from Handler to any Monad
2 parents 89a2415 + 0a8ff1b commit 906a7ea

File tree

14 files changed

+58
-22
lines changed

14 files changed

+58
-22
lines changed

servant-swagger-ui-core/src/Servant/Swagger/UI/Core.hs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,16 +101,19 @@ instance (KnownSymbol dir, HasLink api, Link ~ MkLink api Link, IsElem api api)
101101
proxyApi = Proxy :: Proxy api
102102

103103
swaggerSchemaUIServerImpl
104-
:: (Server api ~ Handler Swagger)
104+
:: (Monad m, ServerT api m ~ m Swagger)
105105
=> T.Text -> [(FilePath, ByteString)]
106-
-> Swagger -> Server (SwaggerSchemaUI' dir api)
106+
-> Swagger -> ServerT (SwaggerSchemaUI' dir api) m
107107
swaggerSchemaUIServerImpl indexTemplate files swagger
108108
= swaggerSchemaUIServerImpl' indexTemplate files $ return swagger
109109

110110
-- | Use a custom server to serve the Swagger spec source.
111111
swaggerSchemaUIServerImpl'
112-
:: T.Text -> [(FilePath, ByteString)]
113-
-> Server api -> Server (SwaggerSchemaUI' dir api)
112+
:: Monad m
113+
=> T.Text
114+
-> [(FilePath, ByteString)]
115+
-> ServerT api m
116+
-> ServerT (SwaggerSchemaUI' dir api) m
114117
swaggerSchemaUIServerImpl' indexTemplate files server
115118
= server
116119
:<|> return (SwaggerUiHtml indexTemplate)

servant-swagger-ui/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
- 0.3.4.3.37.2
2+
- Update to `swagger-ui-3.37.2`
3+
- Add `swaggerSchemaUIServerT` and `swaggerSchemaUIServerT'`
4+
15
- 0.3.4.3.36.1
26
- Update to `swagger-ui-3.36.1`
37

servant-swagger-ui/servant-swagger-ui.cabal

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cabal-version: 1.12
22
name: servant-swagger-ui
3-
version: 0.3.4.3.36.1
3+
version: 0.3.4.3.37.2
44
synopsis: Servant swagger ui
55
category: Web, Servant, Swagger
66
description:
@@ -28,13 +28,13 @@ tested-with:
2828
extra-source-files:
2929
CHANGELOG.md
3030
index.html.tmpl
31-
swagger-ui-dist-3.36.1/favicon-16x16.png
32-
swagger-ui-dist-3.36.1/favicon-32x32.png
33-
swagger-ui-dist-3.36.1/oauth2-redirect.html
34-
swagger-ui-dist-3.36.1/swagger-ui-bundle.js
35-
swagger-ui-dist-3.36.1/swagger-ui-standalone-preset.js
36-
swagger-ui-dist-3.36.1/swagger-ui.css
37-
swagger-ui-dist-3.36.1/swagger-ui.js
31+
swagger-ui-dist-3.37.2/favicon-16x16.png
32+
swagger-ui-dist-3.37.2/favicon-32x32.png
33+
swagger-ui-dist-3.37.2/oauth2-redirect.html
34+
swagger-ui-dist-3.37.2/swagger-ui-bundle.js
35+
swagger-ui-dist-3.37.2/swagger-ui-standalone-preset.js
36+
swagger-ui-dist-3.37.2/swagger-ui.css
37+
swagger-ui-dist-3.37.2/swagger-ui.js
3838

3939
source-repository head
4040
type: git

servant-swagger-ui/src/Servant/Swagger/UI.hs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ module Servant.Swagger.UI (
4646
SwaggerSchemaUI,
4747
SwaggerSchemaUI',
4848
swaggerSchemaUIServer,
49+
swaggerSchemaUIServerT,
4950
swaggerSchemaUIServer',
51+
swaggerSchemaUIServerT',
5052

5153
-- ** Official swagger ui
5254
swaggerUiIndexTemplate,
@@ -72,6 +74,19 @@ swaggerSchemaUIServer
7274
swaggerSchemaUIServer =
7375
swaggerSchemaUIServerImpl swaggerUiIndexTemplate swaggerUiFiles
7476

77+
-- | Serve Swagger UI on @/dir@ using @api@ as a Swagger spec source.
78+
--
79+
-- Generalized to 'ServerT'
80+
--
81+
-- @
82+
-- swaggerSchemaUIServerT :: Swagger -> ServerT (SwaggerSchemaUI schema dir) m
83+
-- @
84+
swaggerSchemaUIServerT
85+
:: (Monad m, ServerT api m ~ m Swagger)
86+
=> Swagger -> ServerT (SwaggerSchemaUI' dir api) m
87+
swaggerSchemaUIServerT =
88+
swaggerSchemaUIServerImpl swaggerUiIndexTemplate swaggerUiFiles
89+
7590
-- | Use a custom server to serve the Swagger spec source.
7691
--
7792
-- This allows even more control over how the spec source is served.
@@ -83,8 +98,22 @@ swaggerSchemaUIServer'
8398
swaggerSchemaUIServer' =
8499
swaggerSchemaUIServerImpl' swaggerUiIndexTemplate swaggerUiFiles
85100

101+
-- | Use a custom server to serve the Swagger spec source.
102+
--
103+
-- This allows even more control over how the spec source is served.
104+
-- It allows, for instance, serving the spec source with authentication,
105+
-- customizing the response based on the client or serving a swagger.yaml
106+
-- instead.
107+
--
108+
-- Generalized to 'ServerT'
109+
--
110+
swaggerSchemaUIServerT'
111+
:: Monad m => ServerT api m -> ServerT (SwaggerSchemaUI' dir api) m
112+
swaggerSchemaUIServerT' =
113+
swaggerSchemaUIServerImpl' swaggerUiIndexTemplate swaggerUiFiles
114+
86115
swaggerUiIndexTemplate :: Text
87116
swaggerUiIndexTemplate = $(embedText "index.html.tmpl")
88117

89118
swaggerUiFiles :: [(FilePath, ByteString)]
90-
swaggerUiFiles = $(embedRecursiveDir "swagger-ui-dist-3.36.1")
119+
swaggerUiFiles = $(embedRecursiveDir "swagger-ui-dist-3.37.2")

servant-swagger-ui/swagger-ui-dist-3.36.1/swagger-ui-bundle.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

servant-swagger-ui/swagger-ui-dist-3.36.1/swagger-ui-standalone-preset.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

servant-swagger-ui/swagger-ui-dist-3.36.1/swagger-ui.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)