@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE DeriveGeneric #-}
23{-# LANGUAGE GeneralizedNewtypeDeriving #-}
34{-# LANGUAGE NamedFieldPuns #-}
@@ -48,6 +49,7 @@ import GHC.Generics (Generic)
4849import Network.HTTP.Types (Query)
4950import Network.Socket (SockAddr(SockAddrInet), tupleToHostAddress)
5051
52+import Rollbar.Aeson
5153import Rollbar.Item.MissingHeaders
5254
5355import Text.Read (readMaybe)
@@ -96,14 +98,18 @@ instance ToJSON Get where
9698 toJSON (Get q) = object . catMaybes . queryKVs $ q
9799 toEncoding (Get q) = pairs . mconcat . catMaybes . queryKVs $ q
98100
99−queryKVs :: forall kv. (KeyValue kv) => Query -> [Maybe kv]
101+#if MIN_VERSION_aeson(2, 2, 0)
102+queryKVs :: forall e kv. KeyValue e kv => Query -> [Maybe kv]
103+#else
104+queryKVs :: forall kv. KeyValue kv => Query -> [Maybe kv]
105+#endif
100106queryKVs = fmap go
101107 where
102108 go :: (BS.ByteString, Maybe BS.ByteString) -> Maybe kv
103109 go (key', val') = do
104110 key <- myDecodeUtf8 key'
105111 let val = val' >>= myDecodeUtf8
106− pure (key .= val)
112+ pure (textToKey key .= val)
107113
108114-- | The HTTP Verb
109115newtype Method
@@ -149,7 +155,11 @@ instance ToJSON IP where
149155 toJSON (IP ip) = toJSON (show ip)
150156 toEncoding (IP ip) = toEncoding (show ip)
151157
158+#if MIN_VERSION_aeson(2, 2, 0)
159+requestKVs :: (KeyValue e kv, RemoveHeaders headers) => Request headers -> [kv]
160+#else
152161requestKVs :: (KeyValue kv, RemoveHeaders headers) => Request headers -> [kv]
162+#endif
153163requestKVs Request{get, headers, method, queryString, rawBody, url, userIP} =
154164 [ "body" .= rawBody
155165 , "GET" .= get