servant-swagger-ui 0.1.0.2.1.4 → 0.1.1.2.1.4
raw patch · 4 files changed
+35/−29 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG.md +3/−0
- example/Main.hs +4/−5
- servant-swagger-ui.cabal +9/−8
- src/Servant/Swagger/UI.hs +19/−16
+ CHANGELOG.md view
@@ -0,0 +1,3 @@+- 0.1.1.2.1.4++ - Documentation and example improvements
example/Main.hs view
@@ -67,9 +67,9 @@ type SwaggerSchemaEndpoint = "swagger.js" :> Get '[JSON] Swagger data API-type API' = BasicAPI- :<|> SwaggerSchemaEndpoint+type API' = SwaggerSchemaEndpoint :<|> SwaggerUI "ui" SwaggerSchemaEndpoint API+ :<|> BasicAPI instance HasServer API #if MIN_VERSION_servant(0,5,0)@@ -83,10 +83,9 @@ -- Implementation server :: Server API-server =- (return "Hello World" :<|> catEndpoint :<|> catEndpoint :<|> catEndpoint)- :<|> return swaggerDoc+server = return swaggerDoc :<|> swaggerUIServer+ :<|> (return "Hello World" :<|> catEndpoint :<|> catEndpoint :<|> catEndpoint) where catEndpoint n = return $ Cat n False
servant-swagger-ui.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: servant-swagger-ui-version: 0.1.0.2.1.4+version: 0.1.1.2.1.4 synopsis: Servant swagger ui description: Provide embedded swagger UI for servant and swagger (i.e. servant-swagger) category: Web@@ -18,6 +18,7 @@ cabal-version: >= 1.10 extra-source-files:+ CHANGELOG.md index.html.tmpl README.md swagger-dist-2.1.4/css/print.css@@ -81,9 +82,9 @@ , 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.8- , servant-blaze >=0.4.4.5 && <0.8- , servant-server >=0.4.4.5 && <0.8+ , servant >=0.4.4.5 && <0.9+ , servant-blaze >=0.4.4.5 && <0.9+ , servant-server >=0.4.4.5 && <0.9 , servant-swagger >=1.0.3 && <1.2 , swagger2 >=2.0.1 && <2.2 , template-haskell >=2.9 && <2.12@@ -108,16 +109,16 @@ , 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.8- , servant-blaze >=0.4.4.5 && <0.8- , servant-server >=0.4.4.5 && <0.8+ , servant >=0.4.4.5 && <0.9+ , servant-blaze >=0.4.4.5 && <0.9+ , servant-server >=0.4.4.5 && <0.9 , 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 , servant-swagger-ui- , servant-server >=0.4.4.5 && <0.8+ , servant-server >=0.4.4.5 && <0.9 , aeson >=0.8.0.2 && <0.12 , base-compat >=0.6.0 && <0.10 , lens >=4.7.0.1 && <4.15
src/Servant/Swagger/UI.hs view
@@ -24,42 +24,44 @@ -- /An example:/ -- -- @--- -- | Actual API+-- -- | Actual API. -- type BasicAPI = Get '[PlainText, JSON] Text -- :\<|> "cat" :> Capture ":name" CatName :> Get '[JSON] Cat ----- -- | Swagger schema endpoint+-- -- | Swagger schema endpoint. -- type SwaggerSchemaEndpoint = "swagger.js" :> Get '[JSON] Swagger -- -- -- | Unhabitated new data type, to be able to refer to API type from the API type. -- data API ----- -- | Underlying API type--- type API' = BasicAPI--- :\<|> SwaggerSchemaEndpoint+-- -- | Underlying API type.+-- --+-- -- NOTE: place BasicAPI last for it not to override SwaggerSchemaEndpoing and SwaggerUI.+-- -- If you place BasicAPI first and it has Raw endpoint at root Swagger schema and UI won't work.+-- type API' = SwaggerSchemaEndpoint -- :\<|> 'SwaggerUI' "ui" SwaggerSchemaEndpoint API------ -- Unfortunately we have to write those trivial instances.+-- :\<|> BasicAPI -- -- -- Optionally we can do:--- -- data API'= BasicAPI--- -- :\<|> SwaggerSchemaEndpoint -- ----- -- | Underlying API type--- -- type API = API'--- -- :\<|> SwaggerUI "ui" SwaggerSchemaEndpoint API'+-- -- type API' = SwaggerSchemaEndpoint+-- -- :\<|> BasicAPI+-- --+-- -- type API = SwaggerUI "ui" SwaggerSchemaEndpoint API'+-- -- :\<|> API' ----- instance HasServer API where+-- -- Unfortunately we have to write these trivial instances.+--+-- instance HasServer API context where -- type ServerT API m = ServerT API' m -- route _ = route (Proxy :: Proxy API') -- -- type instance IsElem' e API = IsElem e API' -- -- server :: Server API--- server =--- (pure "Hello World" :\<|> catEndpoint)--- :\<|> pure swaggerDoc+-- server = pure swaggerDoc -- :\<|> 'swaggerUIServer'+-- :\<|> (pure "Hello World" :\<|> catEndpoint) -- where -- catEndpoint name = pure $ Cat name False -- @@@ -103,6 +105,7 @@ uri = safeLink (Proxy :: Proxy api) (Proxy :: Proxy endpoint) :: URI url = T.pack $ "/" <> uriPath uri -- TODO: do we need more? +-- | Serve Swagger UI on @/<dir>@ using @endpoint@ as Swagger spec source for @api@. swaggerUIServer :: Server (SwaggerUI dir endpoint api) swaggerUIServer = return SwaggerUiHtml :<|> return SwaggerUiHtml :<|> rest where rest = staticApp $ embeddedSettings swaggerUiFiles