servant-swagger-ui 0.2.1.2.2.8 → 0.2.2.2.2.8
raw patch · 4 files changed
+45/−42 lines, 4 filesdep ~aesondep ~basedep ~blaze-markupPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: aeson, base, blaze-markup, servant, servant-server, servant-swagger, swagger2, text, transformers, transformers-compat
API changes (from Hackage documentation)
- Servant.Swagger.UI: instance (GHC.TypeLits.KnownSymbol dir, Servant.Utils.Links.HasLink api, Network.URI.URI ~ Servant.Utils.Links.MkLink api, Servant.Utils.Links.IsElem api api) => Text.Blaze.ToMarkup (Servant.Swagger.UI.SwaggerUiHtml dir api)
+ Servant.Swagger.UI: instance (GHC.TypeLits.KnownSymbol dir, Servant.Utils.Links.HasLink api, Servant.Utils.Links.Link ~ Servant.Utils.Links.MkLink api, Servant.API.TypeLevel.IsElem api api) => Text.Blaze.ToMarkup (Servant.Swagger.UI.SwaggerUiHtml dir api)
- Servant.Swagger.UI: jensolegSwaggerSchemaUIServer :: (Server api ~ ExceptT ServantErr IO Swagger) => Swagger -> Server (SwaggerSchemaUI' dir api)
+ Servant.Swagger.UI: jensolegSwaggerSchemaUIServer :: (Server api ~ Handler Swagger) => Swagger -> Server (SwaggerSchemaUI' dir api)
- Servant.Swagger.UI: swaggerSchemaUIServer :: (Server api ~ ExceptT ServantErr IO Swagger) => Swagger -> Server (SwaggerSchemaUI' dir api)
+ Servant.Swagger.UI: swaggerSchemaUIServer :: (Server api ~ Handler Swagger) => Swagger -> Server (SwaggerSchemaUI' dir api)
- Servant.Swagger.UI: swaggerSchemaUIServerImpl :: (Server api ~ ExceptT ServantErr IO Swagger) => Text -> [(FilePath, ByteString)] -> Swagger -> Server (SwaggerSchemaUI' dir api)
+ Servant.Swagger.UI: swaggerSchemaUIServerImpl :: (Server api ~ Handler Swagger) => Text -> [(FilePath, ByteString)] -> Swagger -> Server (SwaggerSchemaUI' dir api)
Files
- CHANGELOG.md +3/−0
- example/Main.hs +8/−2
- servant-swagger-ui.cabal +15/−34
- src/Servant/Swagger/UI.hs +19/−6
CHANGELOG.md view
@@ -1,3 +1,6 @@+- 0.2.2.2.2.8+ - Support `servant-0.10`+ - 0.2.1.2.2.8 - Update to `swagger-ui-2.2.8` - Add support for [jensoleg](https://github.com/jensoleg/swagger-ui>) theme
example/Main.hs view
@@ -32,13 +32,19 @@ import qualified Network.Wai.Handler.Warp as Warp +#if MIN_VERSION_servant(0,7,0)+-- do nothing+#else #if MIN_VERSION_servant(0,5,0) import Control.Monad.Trans.Except (ExceptT)+#define Handler ExceptT ServantErr IO #else import Control.Monad.Trans.Either (EitherT)-#define ExceptT EitherT+#define Handler EitherT ServantErr IO #endif+#endif + -- data types data Cat = Cat { catName :: CatName, catIsMale :: Bool } deriving (Generic, Show)@@ -106,7 +112,7 @@ -- Unfortunately we have to specify the basePath manually atm. schemaUiServer- :: (Server api ~ ExceptT ServantErr IO Swagger)+ :: (Server api ~ Handler Swagger) => Swagger -> Server (SwaggerSchemaUI' dir api) schemaUiServer = case uiFlavour of Original -> swaggerSchemaUIServer
servant-swagger-ui.cabal view
@@ -1,9 +1,5 @@--- This file has been generated from package.yaml by hpack version 0.15.0.------ see: https://github.com/sol/hpack- name: servant-swagger-ui-version: 0.2.1.2.2.8+version: 0.2.2.2.2.8 synopsis: Servant swagger ui description: Provide embedded swagger UI for servant and swagger (i.e. servant-swagger) category: Web@@ -13,7 +9,7 @@ maintainer: Oleg Grenrus <oleg.grenrus@iki.fi> license: BSD3 license-file: LICENSE-tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.1+tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2 build-type: Simple cabal-version: >= 1.10 @@ -138,15 +134,15 @@ ghc-options: -Wall build-depends: base >=4.7 && <4.10- , blaze-markup >=0.7.0.2 && <0.8+ , blaze-markup >=0.7.0.2 && <0.9 , bytestring >=0.10.4.0 && <0.11- , directory >=1.2.1.0 && <1.3+ , directory >=1.2.1.0 && <1.4 , file-embed >=0.0.9 && <0.1 , filepath >=1.3.0.2 && <1.5 , http-media >=0.6.2 && <0.8- , servant >=0.4.4.5 && <0.10+ , servant >=0.4.4.5 && <0.11 , servant-blaze >=0.4.4.5 && <0.9- , servant-server >=0.4.4.5 && <0.10+ , servant-server >=0.4.4.5 && <0.11 , servant-swagger >=1.0.3 && <1.2 , swagger2 >=2.0.1 && <2.2 , template-haskell >=2.9 && <2.12@@ -173,35 +169,20 @@ example ghc-options: -Wall build-depends:- base >=4.7 && <4.10- , blaze-markup >=0.7.0.2 && <0.8- , bytestring >=0.10.4.0 && <0.11- , directory >=1.2.1.0 && <1.3- , file-embed >=0.0.9 && <0.1- , filepath >=1.3.0.2 && <1.5- , http-media >=0.6.2 && <0.8- , servant >=0.4.4.5 && <0.10- , servant-blaze >=0.4.4.5 && <0.9- , servant-server >=0.4.4.5 && <0.10- , servant-swagger >=1.0.3 && <1.2- , swagger2 >=2.0.1 && <2.2- , template-haskell >=2.9 && <2.12- , text >=1.2.0.6 && <1.3- , wai-app-static >=3.0.1.1 && <3.2+ base+ , servant+ , servant-server+ , servant-swagger , servant-swagger-ui- , servant-server >=0.4.4.5 && <0.10- , aeson >=0.8.0.2 && <1.1+ , swagger2+ , text+ , aeson >=0.8.0.2 && <1.2 , base-compat >=0.6.0 && <0.10 , lens >=4.7.0.1 && <4.16 , wai >=3.0.3.0 && <3.3 , warp >=3.0.13.1 && <3.3 if flag(servant-0-5)- build-depends:- servant >=0.5- , transformers >=0.3 && <0.6- , transformers-compat >=0.3 && <0.6+ build-depends: transformers, transformers-compat else- build-depends:- servant <0.5- , either+ build-depends: either default-language: Haskell2010
src/Servant/Swagger/UI.hs view
@@ -74,12 +74,17 @@ import qualified Data.Text as T +#if MIN_VERSION_servant(0,7,0)+-- do nothing+#else #if MIN_VERSION_servant(0,5,0) import Control.Monad.Trans.Except (ExceptT)+#define Handler ExceptT ServantErr IO #else import Control.Monad.Trans.Either (EitherT)-#define ExceptT EitherT+#define Handler EitherT ServantErr IO #endif+#endif -- | Swagger schema + ui api. --@@ -113,7 +118,15 @@ -- to find schema file automatically. data SwaggerUiHtml (dir :: Symbol) (api :: *) = SwaggerUiHtml T.Text -instance (KnownSymbol dir, HasLink api, URI ~ MkLink api, IsElem api api)+#if MIN_VERSION_servant(0,10,0)+#define LINK Link+#define LINKPATH uriPath . linkURI+#else+#define LINK URI+#define LINKPATH uriPath+#endif++instance (KnownSymbol dir, HasLink api, LINK ~ MkLink api, IsElem api api) => ToMarkup (SwaggerUiHtml dir api) where toMarkup (SwaggerUiHtml template) = preEscapedToMarkup@@ -121,7 +134,7 @@ $ T.replace "SERVANT_SWAGGER_UI_DIR" dir $ template where- schema = T.pack $ uriPath $ safeLink proxyApi proxyApi+ schema = T.pack $ LINKPATH $ safeLink proxyApi proxyApi dir = T.pack $ symbolVal (Proxy :: Proxy dir) proxyApi = Proxy :: Proxy api @@ -131,7 +144,7 @@ -- swaggerSchemaUIServer :: Swagger -> Server (SwaggerSchemaUI schema dir) -- @ swaggerSchemaUIServer- :: (Server api ~ ExceptT ServantErr IO Swagger)+ :: (Server api ~ Handler Swagger) => Swagger -> Server (SwaggerSchemaUI' dir api) swaggerSchemaUIServer = swaggerSchemaUIServerImpl swaggerUiIndexTemplate swaggerUiFiles@@ -140,13 +153,13 @@ -- -- See <https://github.com/jensoleg/swagger-ui> jensolegSwaggerSchemaUIServer- :: (Server api ~ ExceptT ServantErr IO Swagger)+ :: (Server api ~ Handler Swagger) => Swagger -> Server (SwaggerSchemaUI' dir api) jensolegSwaggerSchemaUIServer = swaggerSchemaUIServerImpl jensolegIndexTemplate jensolegFiles swaggerSchemaUIServerImpl- :: (Server api ~ ExceptT ServantErr IO Swagger)+ :: (Server api ~ Handler Swagger) => T.Text -> [(FilePath, ByteString)] -> Swagger -> Server (SwaggerSchemaUI' dir api) swaggerSchemaUIServerImpl indexTemplate files swagger = return swagger