on master help sign in
Make it work with aeson 2
5ffbf92Mark Karpov
CHANGELOG.md+4
@@ -1,3 +1,7 @@
1+## Req 3.9.2
2+
3+* Works with `aeson-2.x.x.x`.
4+
1## Req 3.9.1
5## Req 3.9.1
2
6
3* Builds with GHC 9.0.
7* Builds with GHC 9.0.
httpbin-tests/Network/HTTP/ReqSpec.hs+7−5
@@ -1,5 +1,6 @@
1{-# LANGUAGE DataKinds #-}
1{-# LANGUAGE DataKinds #-}
2{-# LANGUAGE FlexibleInstances #-}
2{-# LANGUAGE FlexibleInstances #-}
3+{-# LANGUAGE LambdaCase #-}
3{-# LANGUAGE OverloadedStrings #-}
4{-# LANGUAGE OverloadedStrings #-}
4{-# LANGUAGE RankNTypes #-}
5{-# LANGUAGE RankNTypes #-}
5{-# OPTIONS_GHC -fno-warn-orphans #-}
6{-# OPTIONS_GHC -fno-warn-orphans #-}
@@ -11,9 +12,10 @@ import Control.Monad.Reader
11import Control.Monad.Trans.Control
12import Control.Monad.Trans.Control
12import Data.Aeson (ToJSON (..), Value (..), object, (.=))
13import Data.Aeson (ToJSON (..), Value (..), object, (.=))
13import qualified Data.Aeson as A
14import qualified Data.Aeson as A
15+import qualified Data.Aeson.KeyMap as Aeson.KeyMap
14import qualified Data.ByteString as B
16import qualified Data.ByteString as B
15import qualified Data.ByteString.Lazy as BL
17import qualified Data.ByteString.Lazy as BL
16−import qualified Data.HashMap.Strict as HM
18+import Data.Functor.Identity (runIdentity)
17import Data.Proxy
19import Data.Proxy
18import Data.Text (Text)
20import Data.Text (Text)
19import qualified Data.Text as T
21import qualified Data.Text as T
@@ -408,13 +410,13 @@ httpbin = https "httpbin.org"
408-- | Remove “origin” field from JSON value. Origin may change, we don't want
410-- | Remove “origin” field from JSON value. Origin may change, we don't want
409-- to depend on that.
411-- to depend on that.
410stripOrigin :: Value -> Value
412stripOrigin :: Value -> Value
411−stripOrigin (Object m) = Object (HM.delete "origin" m)
413+stripOrigin (Object m) = Object (Aeson.KeyMap.delete "origin" m)
412stripOrigin value = value
414stripOrigin value = value
413
415
414-- | Remove funny headers that might break the tests.
416-- | Remove funny headers that might break the tests.
415stripFunnyHeaders :: Value -> Value
417stripFunnyHeaders :: Value -> Value
416stripFunnyHeaders (Object m) =
418stripFunnyHeaders (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
418 f value = value
420 f value = value
419 hs =
421 hs =
420 [ "Content-Type",
422 [ "Content-Type",
@@ -424,7 +426,7 @@ stripFunnyHeaders (Object m) =
424 "Foo",
426 "Foo",
425 "Baz"
427 "Baz"
426 ]
428 ]
427− in Object (HM.adjust f "headers" m)
429+ in Object (runIdentity (Aeson.KeyMap.alterF (pure . fmap f) "headers" m))
428stripFunnyHeaders value = value
430stripFunnyHeaders value = value
429
431
430-- | This is a complete test case that makes use of <https://httpbin.org> to
432-- | This is a complete test case that makes use of <https://httpbin.org> to
@@ -457,7 +459,7 @@ selector404 _ = False
457
459
458-- | The empty JSON 'Object'.
460-- | The empty JSON 'Object'.
459emptyObject :: Value
461emptyObject :: Value
460−emptyObject = Object HM.empty
462+emptyObject = Object Aeson.KeyMap.empty
461
463
462-- | Get a rendered JSON value as 'Text'.
464-- | Get a rendered JSON value as 'Text'.
463reflectJSON :: ToJSON a => a -> Text
465reflectJSON :: ToJSON a => a -> Text
req.cabal+4−5
@@ -33,7 +33,7 @@ library
33 exposed-modules: Network.HTTP.Req
33 exposed-modules: Network.HTTP.Req
34 default-language: Haskell2010
34 default-language: Haskell2010
35 build-depends:
35 build-depends:
36− aeson >=0.9 && <1.6,
36+ aeson >=0.9 && <3,
37 authenticate-oauth >=1.5 && <1.8,
37 authenticate-oauth >=1.5 && <1.8,
38 base >=4.13 && <5.0,
38 base >=4.13 && <5.0,
39 blaze-builder >=0.3 && <0.5,
39 blaze-builder >=0.3 && <0.5,
@@ -76,7 +76,7 @@ test-suite pure-tests
76 default-language: Haskell2010
76 default-language: Haskell2010
77 build-depends:
77 build-depends:
78 QuickCheck >=2.7 && <3.0,
78 QuickCheck >=2.7 && <3.0,
79− aeson >=0.9 && <1.6,
79+ aeson >=0.9 && <3,
80 base >=4.13 && <5.0,
80 base >=4.13 && <5.0,
81 blaze-builder >=0.3 && <0.5,
81 blaze-builder >=0.3 && <0.5,
82 bytestring >=0.10.8 && <0.12,
82 bytestring >=0.10.8 && <0.12,
@@ -108,7 +108,7 @@ test-suite httpbin-tests
108 default-language: Haskell2010
108 default-language: Haskell2010
109 build-depends:
109 build-depends:
110 QuickCheck >=2.7 && <3.0,
110 QuickCheck >=2.7 && <3.0,
111− aeson >=0.9 && <1.6,
111+ aeson >=2 && <3,
112 base >=4.13 && <5.0,
112 base >=4.13 && <5.0,
113 bytestring >=0.10.8 && <0.12,
113 bytestring >=0.10.8 && <0.12,
114 hspec >=2.0 && <3.0,
114 hspec >=2.0 && <3.0,
@@ -117,8 +117,7 @@ test-suite httpbin-tests
117 monad-control >=1.0 && <1.1,
117 monad-control >=1.0 && <1.1,
118 mtl >=2.0 && <3.0,
118 mtl >=2.0 && <3.0,
119 req,
119 req,
120− text >=0.2 && <1.3,
120+ text >=0.2 && <1.3
121− unordered-containers >=0.2.5 && <0.3
122
121
123 if flag(dev)
122 if flag(dev)
124 ghc-options: -O0 -Wall -Werror
123 ghc-options: -O0 -Wall -Werror