mellon-web 0.8.0.6 → 0.8.0.7
raw patch · 6 files changed
+75/−55 lines, 6 filesdep +servant-client-coredep ~doctestdep ~hlintdep ~hspecPVP ok
version bump matches the API change (PVP)
Dependencies added: servant-client-core
Dependency ranges changed: doctest, hlint, hspec, http-types, servant, servant-client, servant-lucid, servant-server
API changes (from Hackage documentation)
Files
- changelog.md +10/−0
- examples/ScheduleUnlock.hs +14/−8
- mellon-web.cabal +15/−12
- package.yaml +30/−27
- src/Mellon/Web/Server/API.hs +4/−6
- test/Mellon/Web/ClientSpec.hs +2/−2
changelog.md view
@@ -1,3 +1,13 @@+## 0.8.0.7 (2018-04-03)++Changes:++ - Bump several package upper bounds.+ + - Requires servant 0.13.+ + - Drop support for Stackage LTS < 11.+ ## 0.8.0.6 (2018-02-04) Fixes:
examples/ScheduleUnlock.hs view
@@ -31,8 +31,14 @@ import Network.HTTP.Types (Status(..)) import Options.Applicative import Servant.Client- (BaseUrl, ClientEnv(..), ServantError(..), parseBaseUrl,- runClientM)+ ( BaseUrl+ , ClientEnv+ , ServantError(..)+ , mkClientEnv+ , parseBaseUrl+ , runClientM+ )+import Servant.Client.Core (GenResponse(responseBody, responseStatusCode)) import System.Exit (ExitCode(..), exitWith) data GlobalOptions =@@ -103,7 +109,7 @@ then Unlocked end else Locked in do manager <- newManager tlsManagerSettings- let clientEnv = ClientEnv manager url+ let clientEnv = mkClientEnv manager url runClientM (putState state) clientEnv >>= \case Right status -> do putStrLn $ ((show status) :: String)@@ -112,16 +118,16 @@ do putStrLn $ "Mellon service error: " ++ prettyServantError e exitWith $ ExitFailure 1 prettyServantError :: ServantError -> String- prettyServantError (FailureResponse _ status _ _) =- show (statusCode status) ++ " " ++ (toS $ statusMessage status)- prettyServantError (DecodeFailure _ _ _) =+ prettyServantError (FailureResponse response) =+ show (responseStatusCode response) ++ " " ++ (toS $ responseBody response)+ prettyServantError (DecodeFailure _ _) = "decode failure" prettyServantError (UnsupportedContentType _ _) = "unsupported content type"- prettyServantError (InvalidContentTypeHeader _ _) =+ prettyServantError (InvalidContentTypeHeader _) = "invalid content type header" prettyServantError (ConnectionError _) =- "connection refused"+ "connection error" main :: IO () main = execParser opts >>= run
mellon-web.cabal view
@@ -1,11 +1,11 @@--- This file has been generated from package.yaml by hpack version 0.21.2.+-- This file has been generated from package.yaml by hpack version 0.27.0. -- -- see: https://github.com/sol/hpack ----- hash: 1f6be6c884c3ebe5ad3e9cc23e01642a2104485a9d38263856e26947381a37b0+-- hash: 37fd9457219bddae1b0efb878b9f204202aaf16601dc4e139c38f8f16087cf2a name: mellon-web-version: 0.8.0.6+version: 0.8.0.7 synopsis: A REST web service for Mellon controllers description: The @mellon-web@ package wraps a @mellon-core@ controller in a REST web service, making it possible to control physical access devices@@ -41,7 +41,7 @@ copyright: Copyright (c) 2018, Quixoftic, LLC license: BSD3 license-file: LICENSE-tested-with: GHC==8.0.2 GHC==8.2.2+tested-with: GHC==8.0.2 GHC==8.2.2 GHC==8.4.1 build-type: Simple cabal-version: >= 1.10 @@ -98,16 +98,17 @@ , base >=4.8 && <5 , bytestring ==0.10.* , http-client >=0.4 && <0.6- , http-types ==0.9.*+ , http-types >=0.9 && <0.13 , lens >=4 && <5 , lucid ==2.9.* , mellon-core , protolude ==0.2.*- , servant ==0.11.*- , servant-client ==0.11.*+ , servant ==0.13.*+ , servant-client ==0.13.*+ , servant-client-core ==0.13.* , servant-docs >=0.10 && <0.12- , servant-lucid ==0.7.*- , servant-server ==0.11.*+ , servant-lucid >=0.7 && <0.9+ , servant-server ==0.13.* , servant-swagger ==1.1.* , servant-swagger-ui ==0.2.* , swagger2 >=2.1 && <2.3@@ -197,6 +198,7 @@ , optparse-applicative , protolude , servant-client+ , servant-client-core , time , transformers default-language: Haskell2010@@ -241,7 +243,7 @@ else build-depends: base- , doctest >=0.11 && <0.14+ , doctest >=0.11 && <0.16 , protolude default-language: Haskell2010 @@ -261,7 +263,7 @@ else build-depends: base- , hlint ==2.0.*+ , hlint >=2.0 && <2.2 , protolude default-language: Haskell2010 @@ -279,7 +281,7 @@ , aeson-pretty , base , bytestring- , hspec >=2.2 && <2.5+ , hspec >=2.2 && <2.6 , hspec-wai >=0.6.6 && <0.10 , http-client , http-types@@ -292,6 +294,7 @@ , quickcheck-instances ==0.3.* , servant , servant-client+ , servant-client-core , servant-docs , servant-lucid , servant-server
package.yaml view
@@ -1,5 +1,5 @@ name: mellon-web-version: 0.8.0.6+version: 0.8.0.7 synopsis: A REST web service for Mellon controllers category: Web stability: experimental@@ -53,7 +53,7 @@ server such as Nginx.' -tested-with: GHC==8.0.2 GHC==8.2.2+tested-with: GHC==8.0.2 GHC==8.2.2 GHC==8.4.1 flags: test-hlint:@@ -121,29 +121,30 @@ - ScopedTypeVariables - TypeOperators dependencies:- - base >=4.8 && <5- - aeson >=0.11 && <1.3- - aeson-pretty ==0.8.*- - bytestring ==0.10.*- - http-client >=0.4 && <0.6- - http-types ==0.9.*- - lens >=4 && <5- - lucid ==2.9.*+ - base >=4.8 && <5+ - aeson >=0.11 && <1.3+ - aeson-pretty ==0.8.*+ - bytestring ==0.10.*+ - http-client >=0.4 && <0.6+ - http-types >=0.9 && <0.13+ - lens >=4 && <5+ - lucid ==2.9.* - mellon-core- - protolude ==0.2.*- - servant ==0.11.*- - servant-client ==0.11.*- - servant-docs >=0.10 && <0.12- - servant-lucid ==0.7.*- - servant-server ==0.11.*- - servant-swagger ==1.1.*- - servant-swagger-ui ==0.2.*- - swagger2 >=2.1 && <2.3- - text ==1.2.*- - time >=1.5 && <2- - transformers >=0.4.2 && <0.6- - wai ==3.2.*- - warp ==3.2.*+ - protolude ==0.2.*+ - servant ==0.13.*+ - servant-client ==0.13.*+ - servant-client-core ==0.13.*+ - servant-docs >=0.10 && <0.12+ - servant-lucid >=0.7 && <0.9+ - servant-server ==0.13.*+ - servant-swagger ==1.1.*+ - servant-swagger-ui ==0.2.*+ - swagger2 >=2.1 && <2.3+ - text ==1.2.*+ - time >=1.5 && <2+ - transformers >=0.4.2 && <0.6+ - wai ==3.2.*+ - warp ==3.2.* tests: hlint:@@ -162,7 +163,7 @@ else: dependencies: - base- - hlint ==2.0.*+ - hlint >=2.0 && <2.2 - protolude doctest: main: doctest.hs@@ -177,7 +178,7 @@ else: dependencies: - base- - doctest >=0.11 && <0.14+ - doctest >=0.11 && <0.16 - protolude spec: main: Main.hs@@ -202,7 +203,7 @@ - aeson - aeson-pretty - bytestring- - hspec >=2.2 && <2.5+ - hspec >=2.2 && <2.6 - hspec-wai >=0.6.6 && <0.10 - http-client - http-types@@ -214,6 +215,7 @@ - protolude - servant - servant-client+ - servant-client-core - servant-docs - servant-lucid - servant-server@@ -294,6 +296,7 @@ - optparse-applicative - protolude - servant-client+ - servant-client-core - time - transformers mock-mellon-server:
src/Mellon/Web/Server/API.hs view
@@ -64,10 +64,11 @@ import qualified Mellon.Controller as Controller (State(..)) import Network.Wai (Application) import Servant- ((:<|>)(..), (:>), (:~>)(..), Get, Handler, JSON, Proxy(..), Put,- ReqBody, Server, ServerT, enter, serve)+ ((:<|>)(..), (:>), Get, Handler, JSON, Proxy(..), Put,+ ReqBody, Server, ServerT, serve) import Servant.Docs (ToSample(..)) import Servant.HTML.Lucid (HTML)+import Servant.Server (hoistServer) -- $setup -- >>> :set -XOverloadedStrings@@ -279,16 +280,13 @@ mellonAPI :: Proxy MellonAPI mellonAPI = Proxy -appToHandler :: Controller d -> AppM d :~> Handler-appToHandler cc = NT $ \m -> runReaderT m cc- -- | A Servant 'Server' which serves the 'MellonAPI' on the given -- 'Controller'. -- -- Normally you will just use 'app', but this function is exported so -- that you can extend/wrap 'MellonAPI'. server :: Controller d -> Server MellonAPI-server cc = enter (appToHandler cc) serverT+server cc = hoistServer mellonAPI (`runReaderT` cc) serverT -- | A WAI 'Network.Wai.Application' which runs the service, using the -- given 'Controller'.
test/Mellon/Web/ClientSpec.hs view
@@ -33,8 +33,8 @@ (port, sock) <- openTestSocket let settings = setPort port $ defaultSettings threadId <- forkIO $ runSettingsSocket settings sock (app cc)- manager <- newManager defaultManagerSettings- let clientEnv = ClientEnv manager $ BaseUrl Http "localhost" port ""+ mgr <- newManager defaultManagerSettings+ let clientEnv = mkClientEnv mgr $ BaseUrl Http "localhost" port "" return (threadId, clientEnv) killApp :: (ThreadId, ClientEnv) -> IO ()