@@ -6,16 +6,10 @@
66{-# LANGUAGE MultiParamTypeClasses #-}
77{-# LANGUAGE OverloadedStrings #-}
88{-# LANGUAGE ScopedTypeVariables #-}
9−{-# LANGUAGE TemplateHaskell #-}
109{-# LANGUAGE TypeFamilies #-}
1110{-# LANGUAGE TypeOperators #-}
1211{-# LANGUAGE UndecidableInstances #-}
1312-----------------------------------------------------------------------------
14−-- |
15−-- Module : Servant.Swagger.UI
16−-- Copyright : (C) 2016 Oleg Grenrus
17−-- License : BSD3
18−-- Maintainer : Oleg Grenrus <oleg.grenrus@iki.fi>
1913--
2014-- Provides 'SwaggerUI' and corresponding 'swaggerUIServer' to embed
2115-- <http://swagger.io/swagger-ui/ swagger ui> into the application.
@@ -41,37 +35,19 @@
4135-- catEndpoint name = pure $ Cat name False
4236-- @
4337
44−module Servant.Swagger.UI (
38+module Servant.Swagger.UI.Core (
4539 -- * Swagger UI API
4640 SwaggerSchemaUI,
4741 SwaggerSchemaUI',
48− swaggerSchemaUIServer,
49− jensolegSwaggerSchemaUIServer,
50− redocSchemaUIServer,
5142
52− -- * Internals
53− --
54− -- /Note:/ in next major version, these will be moved to separate module.
43+ -- * Implementation details
5544 SwaggerUiHtml(..),
5645 swaggerSchemaUIServerImpl,
57− -- ** Official swagger ui
58− swaggerUiIndexTemplate,
59− swaggerUiFiles,
60− -- ** jensoleg theme
61− --
62− -- Current version: @79f3bba07b070cfab1d8c245c4f9229052e20a1a@
63− jensolegIndexTemplate,
64− jensolegFiles,
65− -- ** ReDoc theme
66− --
67− -- Current Version: v1.21.2 https://rebilly.github.io/ReDoc/releases/v1.21.2/redoc.min.js
68− redocIndexTemplate,
69− redocFiles
46+ Handler,
7047 ) where
7148
7249import Data.ByteString (ByteString)
7350import Data.Swagger (Swagger)
74−import FileEmbedLzma
7551import GHC.TypeLits (KnownSymbol, Symbol, symbolVal)
7652import Network.Wai.Application.Static (embeddedSettings, staticApp)
7753import Servant
@@ -85,10 +61,10 @@ import qualified Data.Text as T
8561#else
8662#if MIN_VERSION_servant(0,5,0)
8763import Control.Monad.Trans.Except (ExceptT)
88−#define Handler ExceptT ServantErr IO
64+type Handler = ExceptT ServantErr IO
8965#else
9066import Control.Monad.Trans.Either (EitherT)
91−#define Handler EitherT ServantErr IO
67+type Handler = EitherT ServantErr IO
9268#endif
9369#endif
9470
@@ -144,35 +120,6 @@ instance (KnownSymbol dir, HasLink api, LINK ~ MkLink api, IsElem api api)
144120 dir = T.pack $ symbolVal (Proxy :: Proxy dir)
145121 proxyApi = Proxy :: Proxy api
146122
147−-- | Serve Swagger UI on @/dir@ using @api@ as a Swagger spec source.
148−--
149−-- @
150−-- swaggerSchemaUIServer :: Swagger -> Server (SwaggerSchemaUI schema dir)
151−-- @
152−swaggerSchemaUIServer
153− :: (Server api ~ Handler Swagger)
154− => Swagger -> Server (SwaggerSchemaUI' dir api)
155−swaggerSchemaUIServer =
156− swaggerSchemaUIServerImpl swaggerUiIndexTemplate swaggerUiFiles
157−
158−-- | Serve alternative Swagger UI.
159−--
160−-- See <https://github.com/jensoleg/swagger-ui>
161−jensolegSwaggerSchemaUIServer
162− :: (Server api ~ Handler Swagger)
163− => Swagger -> Server (SwaggerSchemaUI' dir api)
164−jensolegSwaggerSchemaUIServer =
165− swaggerSchemaUIServerImpl jensolegIndexTemplate jensolegFiles
166−
167−-- | Serve alternative Swagger UI.
168−--
169−-- See <https://github.com/Rebilly/ReDoc/tree/v1.x>
170−redocSchemaUIServer
171− :: (Server api ~ Handler Swagger)
172− => Swagger -> Server (SwaggerSchemaUI' dir api)
173−redocSchemaUIServer =
174− swaggerSchemaUIServerImpl redocIndexTemplate redocFiles
175−
176123swaggerSchemaUIServerImpl
177124 :: (Server api ~ Handler Swagger)
178125 => T.Text -> [(FilePath, ByteString)]
@@ -187,21 +134,3 @@ swaggerSchemaUIServerImpl indexTemplate files swagger = return swagger
187134 Tagged $
188135#endif
189136 staticApp $ embeddedSettings files
190−
191−swaggerUiIndexTemplate :: T.Text
192−swaggerUiIndexTemplate = $(embedText "index.html.tmpl")
193−
194−swaggerUiFiles :: [(FilePath, ByteString)]
195−swaggerUiFiles = $(embedRecursiveDir "swagger-ui-dist-3.9.1")
196−
197−jensolegIndexTemplate :: T.Text
198−jensolegIndexTemplate = $(embedText "jensoleg.index.html.tmpl")
199−
200−jensolegFiles :: [(FilePath, ByteString)]
201−jensolegFiles = $(embedRecursiveDir "jensoleg-dist")
202−
203−redocIndexTemplate :: T.Text
204−redocIndexTemplate = $(embedText "redoc.index.html.tmpl")
205−
206−redocFiles :: [(FilePath, ByteString)]
207−redocFiles = $(embedRecursiveDir "redoc-dist")