api-builder 0.15.0.0 → 0.16.0.0
raw patch · 3 files changed
+57/−44 lines, 3 filesdep +QuickCheckdep ~aesondep ~basedep ~http-clientPVP ok
version bump matches the API change (PVP)
Dependencies added: QuickCheck
Dependency ranges changed: aeson, base, http-client
API changes (from Hackage documentation)
- Network.API.Builder.Query: instance Network.API.Builder.Query.ToQuery a => Network.API.Builder.Query.ToQuery (GHC.Base.Maybe a)
+ Network.API.Builder.Error: instance GHC.Base.Semigroup (Network.API.Builder.Error.APIError a)
+ Network.API.Builder.Query: instance Network.API.Builder.Query.ToQuery a => Network.API.Builder.Query.ToQuery (GHC.Maybe.Maybe a)
Files
- api-builder.cabal +35/−41
- src/Network/API/Builder/Error.hs +7/−3
- test/Network/API/Builder/ErrorSpec.hs +15/−0
api-builder.cabal view
@@ -1,11 +1,5 @@--- This file has been generated from package.yaml by hpack version 0.20.0.------ see: https://github.com/sol/hpack------ hash: 7c4b7181e34f5c26900835396c9c93f9249c246a35bacfea6a01f9a84dff464b- name: api-builder-version: 0.15.0.0+version: 0.16.0.0 synopsis: Library for easily building REST API wrappers in Haskell category: Network homepage: https://github.com/intolerable/api-builder@@ -22,22 +16,23 @@ location: git://github.com/intolerable/api-builder.git library- hs-source-dirs:- src- default-extensions: OverloadedStrings FlexibleInstances+ hs-source-dirs: src/+ default-extensions:+ OverloadedStrings+ FlexibleInstances ghc-options: -Wall build-depends:- HTTP ==4000.*- , aeson >=0.9 && <1.3- , base >=4.6 && <4.12- , bifunctors >=4.0 && <6.0- , bytestring ==0.10.*- , http-client >=0.4.30 && <0.6- , http-client-tls >=0.2 && <0.4- , http-types >=0.8 && <0.13- , text ==1.*- , tls >=1.3 && <1.5- , transformers >=0.4 && <0.6+ HTTP ==4000.*,+ aeson >=0.9 && <1.5,+ base >=4.6 && <4.14,+ bifunctors >=4.0 &&< 6.0,+ bytestring ==0.10.*,+ http-client >=0.4.30 && <0.7,+ http-client-tls >=0.2 && <0.4,+ http-types >=0.8 && <0.13,+ text ==1.*,+ tls >=1.3 && <1.5,+ transformers >=0.4 && <0.6 exposed-modules: Network.API.Builder Network.API.Builder.API@@ -56,33 +51,32 @@ test-suite test type: exitcode-stdio-1.0 main-is: Spec.hs- hs-source-dirs:- test+ hs-source-dirs: test/ default-extensions: OverloadedStrings FlexibleInstances ScopedTypeVariables ghc-options: -Wall build-depends:- Cabal >=1.16.0- , aeson- , api-builder- , base ==4.*- , bytestring- , hspec- , http-client- , text- , transformers+ Cabal >=1.16.0,+ aeson,+ api-builder,+ base ==4.*,+ bytestring,+ hspec,+ http-client,+ QuickCheck,+ text,+ transformers other-modules:- Network.API.Builder.ErrorSpec- Network.API.Builder.QuerySpec- Network.API.Builder.RoutesSpec- Network.API.Builder.SendSpec- Paths_api_builder+ Network.API.Builder.ErrorSpec+ Network.API.Builder.QuerySpec+ Network.API.Builder.RoutesSpec+ Network.API.Builder.SendSpec+ Paths_api_builder default-language: Haskell2010 test-suite test-io type: exitcode-stdio-1.0 main-is: Spec.hs- hs-source-dirs:- test-io+ hs-source-dirs: test-io/ default-extensions: OverloadedStrings FlexibleInstances LambdaCase ghc-options: -Wall build-depends:@@ -96,6 +90,6 @@ , text , transformers other-modules:- Network.API.Builder.Examples.StackOverflowSpec- Paths_api_builder+ Network.API.Builder.Examples.StackOverflowSpec+ Paths_api_builder default-language: Haskell2010
src/Network/API/Builder/Error.hs view
@@ -1,7 +1,7 @@ module Network.API.Builder.Error ( APIError(..) ) where -import Data.Monoid+import Data.Semigroup import Network.HTTP.Client (HttpException) import Prelude @@ -23,9 +23,13 @@ (APIError a) == (APIError b) = a == b InvalidURLError == InvalidURLError = True (ParseError a) == (ParseError b) = a == b+ EmptyError == EmptyError = True _ == _ = False +instance Semigroup (APIError a) where+ EmptyError <> x = x+ x <> _ = x+ instance Monoid (APIError a) where mempty = EmptyError- EmptyError `mappend` x = x- x `mappend` _ = x+ mappend = (<>)
test/Network/API/Builder/ErrorSpec.hs view
@@ -1,13 +1,24 @@+{-# OPTIONS_GHC -fno-warn-orphans #-} module Network.API.Builder.ErrorSpec where +import Data.Semigroup ((<>)) import Network.API.Builder.Error import Test.Hspec import Test.Hspec.QuickCheck+import Test.QuickCheck main :: IO () main = hspec spec +instance Arbitrary a => Arbitrary (APIError a) where+ arbitrary = oneof+ [ APIError <$> arbitrary+ , pure InvalidURLError+ , ParseError <$> arbitrary+ , pure EmptyError+ ]+ spec :: Spec spec = describe "APIError" $ do@@ -23,3 +34,7 @@ prop "APIError x == APIError x" $ \(x :: String) -> APIError x == APIError x++ describe "Semigroup" $ do+ prop "(x <> y) <> z == x <> (y <> z)" $ \(x :: APIError ()) y z ->+ (x <> y) <> z == x <> (y <> z)