on master help sign in
Make it work with aeson 2
commit5ffbf924896bedd195f0c20e354205caf295e2bf authorMark Karpov <markkarpov92@gmail.com> dateTue 12 Oct 2021, 17:31 (5 years ago) parent5692f95
3 files changed+15−10
CHANGELOG.md+4 httpbin-tests/Network/HTTP/ReqSpec.hs+7−5 req.cabal+4−5
CHANGELOG.md+4
@@ -1,3 +1,7 @@
1+## Req 3.9.2
2+
3+* Works with `aeson-2.x.x.x`.
4+
15## Req 3.9.1
26
37* Builds with GHC 9.0.
httpbin-tests/Network/HTTP/ReqSpec.hs+7−5
@@ -1,5 +1,6 @@
11{-# LANGUAGE DataKinds #-}
22{-# LANGUAGE FlexibleInstances #-}
3+{-# LANGUAGE LambdaCase #-}
34{-# LANGUAGE OverloadedStrings #-}
45{-# LANGUAGE RankNTypes #-}
56{-# OPTIONS_GHC -fno-warn-orphans #-}
@@ -11,9 +12,10 @@ import Control.Monad.Reader
1112import Control.Monad.Trans.Control
1213import Data.Aeson (ToJSON (..), Value (..), object, (.=))
1314import qualified Data.Aeson as A
15+import qualified Data.Aeson.KeyMap as Aeson.KeyMap
1416import qualified Data.ByteString as B
1517import qualified Data.ByteString.Lazy as BL
16−import qualified Data.HashMap.Strict as HM
18+import Data.Functor.Identity (runIdentity)
1719import Data.Proxy
1820import Data.Text (Text)
1921import qualified Data.Text as T
@@ -408,13 +410,13 @@ httpbin = https "httpbin.org"
408410-- | Remove “origin” field from JSON value. Origin may change, we don't want
409411-- to depend on that.
410412stripOrigin :: Value -> Value
411−stripOrigin (Object m) = Object (HM.delete "origin" m)
413+stripOrigin (Object m) = Object (Aeson.KeyMap.delete "origin" m)
412414stripOrigin value = value
413415
414416-- | Remove funny headers that might break the tests.
415417stripFunnyHeaders :: Value -> Value
416418stripFunnyHeaders (Object m) =
417− let f (Object p) = Object $ HM.filterWithKey (\k _ -> k `elem` hs) p
419+ let f (Object p) = Object $ Aeson.KeyMap.filterWithKey (\k _ -> k `elem` hs) p
418420 f value = value
419421 hs =
420422 [ "Content-Type",
@@ -424,7 +426,7 @@ stripFunnyHeaders (Object m) =
424426 "Foo",
425427 "Baz"
426428 ]
427− in Object (HM.adjust f "headers" m)
429+ in Object (runIdentity (Aeson.KeyMap.alterF (pure . fmap f) "headers" m))
428430stripFunnyHeaders value = value
429431
430432-- | This is a complete test case that makes use of <https://httpbin.org> to
@@ -457,7 +459,7 @@ selector404 _ = False
457459
458460-- | The empty JSON 'Object'.
459461emptyObject :: Value
460−emptyObject = Object HM.empty
462+emptyObject = Object Aeson.KeyMap.empty
461463
462464-- | Get a rendered JSON value as 'Text'.
463465reflectJSON :: ToJSON a => a -> Text
req.cabal+4−5
@@ -33,7 +33,7 @@ library
3333 exposed-modules: Network.HTTP.Req
3434 default-language: Haskell2010
3535 build-depends:
36− aeson >=0.9 && <1.6,
36+ aeson >=0.9 && <3,
3737 authenticate-oauth >=1.5 && <1.8,
3838 base >=4.13 && <5.0,
3939 blaze-builder >=0.3 && <0.5,
@@ -76,7 +76,7 @@ test-suite pure-tests
7676 default-language: Haskell2010
7777 build-depends:
7878 QuickCheck >=2.7 && <3.0,
79− aeson >=0.9 && <1.6,
79+ aeson >=0.9 && <3,
8080 base >=4.13 && <5.0,
8181 blaze-builder >=0.3 && <0.5,
8282 bytestring >=0.10.8 && <0.12,
@@ -108,7 +108,7 @@ test-suite httpbin-tests
108108 default-language: Haskell2010
109109 build-depends:
110110 QuickCheck >=2.7 && <3.0,
111− aeson >=0.9 && <1.6,
111+ aeson >=2 && <3,
112112 base >=4.13 && <5.0,
113113 bytestring >=0.10.8 && <0.12,
114114 hspec >=2.0 && <3.0,
@@ -117,8 +117,7 @@ test-suite httpbin-tests
117117 monad-control >=1.0 && <1.1,
118118 mtl >=2.0 && <3.0,
119119 req,
120− text >=0.2 && <1.3,
121− unordered-containers >=0.2.5 && <0.3
120+ text >=0.2 && <1.3
122121
123122 if flag(dev)
124123 ghc-options: -O0 -Wall -Werror