git.iko.soy/typeable/rollbar-hs
on master help sign in
Support both aeson <2.2 and >=2.2
commitbbbd03ad3166295384600d97b72b06cb1936c36d authormniip <mniip@mniip.com> dateMon 8 Dec 2025, 01:59 (1 year ago) parent78c1bdf
6 files changed+33−2
rollbar-hs.cabal+2−2 src/Rollbar/Item.hs+8 src/Rollbar/Item/Body.hs+5 src/Rollbar/Item/MissingHeaders.hs+4 src/Rollbar/Item/Request.hs+9 src/Rollbar/Item/Server.hs+5
rollbar-hs.cabal+2−2
@@ -51,8 +51,8 @@ library
5151 hs-source-dirs:
5252 src
5353 build-depends:
54− aeson >=2.2
55− , base >=4.10
54+ aeson >=1.0
55+ , base >=4.9
5656 , bytestring >=0.10
5757 , case-insensitive >=1.2
5858 , hostname >=1.0
src/Rollbar/Item.hs+8
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE DataKinds #-}
23{-# LANGUAGE DeriveGeneric #-}
34{-# LANGUAGE NamedFieldPuns #-}
@@ -197,10 +198,17 @@ data Item a headers
197198 }
198199 deriving (Eq, Generic, Show)
199200
201+#if MIN_VERSION_aeson(2, 2, 0)
200202itemKVs
201203 :: (KeyValue e kv, RemoveHeaders headers, ToJSON v)
202204 => Item v headers
203205 -> [kv]
206+#else
207+itemKVs
208+ :: (KeyValue kv, RemoveHeaders headers, ToJSON v)
209+ => Item v headers
210+ -> [kv]
211+#endif
204212itemKVs Item{accessToken, itemData} =
205213 [ "access_token" .= accessToken
206214 , "data" .= itemData
src/Rollbar/Item/Body.hs+5
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE DeriveGeneric #-}
23{-# LANGUAGE GeneralizedNewtypeDeriving #-}
34{-# LANGUAGE NamedFieldPuns #-}
@@ -52,7 +53,11 @@ data Body arbitrary
5253 }
5354 deriving (Eq, Generic, Show)
5455
56+#if MIN_VERSION_aeson(2, 2, 0)
5557bodyKVs :: (KeyValue e kv, ToJSON v) => Body v -> [kv]
58+#else
59+bodyKVs :: (KeyValue kv, ToJSON v) => Body v -> [kv]
60+#endif
5661bodyKVs Message{messageBody, messageData} =
5762 [ "body" .= messageBody
5863 , "data" .= messageData
src/Rollbar/Item/MissingHeaders.hs+4
@@ -64,7 +64,11 @@ instance FromJSON (MissingHeaders headers) where
6464instance RemoveHeaders headers => ToJSON (MissingHeaders headers) where
6565 toJSON = object . catMaybes . requestHeadersKVs . removeHeaders
6666
67+#if MIN_VERSION_aeson(2, 2, 0)
6768requestHeadersKVs :: forall e kv. KeyValue e kv => RequestHeaders -> [Maybe kv]
69+#else
70+requestHeadersKVs :: forall kv. KeyValue kv => RequestHeaders -> [Maybe kv]
71+#endif
6872requestHeadersKVs = fmap go
6973 where
7074 go :: Header -> Maybe kv
src/Rollbar/Item/Request.hs+9
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE DeriveGeneric #-}
23{-# LANGUAGE GeneralizedNewtypeDeriving #-}
34{-# LANGUAGE NamedFieldPuns #-}
@@ -97,7 +98,11 @@ instance ToJSON Get where
9798 toJSON (Get q) = object . catMaybes . queryKVs $ q
9899 toEncoding (Get q) = pairs . mconcat . catMaybes . queryKVs $ q
99100
101+#if MIN_VERSION_aeson(2, 2, 0)
100102queryKVs :: forall e kv. KeyValue e kv => Query -> [Maybe kv]
103+#else
104+queryKVs :: forall kv. KeyValue kv => Query -> [Maybe kv]
105+#endif
101106queryKVs = fmap go
102107 where
103108 go :: (BS.ByteString, Maybe BS.ByteString) -> Maybe kv
@@ -150,7 +155,11 @@ instance ToJSON IP where
150155 toJSON (IP ip) = toJSON (show ip)
151156 toEncoding (IP ip) = toEncoding (show ip)
152157
158+#if MIN_VERSION_aeson(2, 2, 0)
153159requestKVs :: (KeyValue e kv, RemoveHeaders headers) => Request headers -> [kv]
160+#else
161+requestKVs :: (KeyValue kv, RemoveHeaders headers) => Request headers -> [kv]
162+#endif
154163requestKVs Request{get, headers, method, queryString, rawBody, url, userIP} =
155164 [ "body" .= rawBody
156165 , "GET" .= get
src/Rollbar/Item/Server.hs+5
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE DeriveGeneric #-}
23{-# LANGUAGE GeneralizedNewtypeDeriving #-}
34{-# LANGUAGE NamedFieldPuns #-}
@@ -57,7 +58,11 @@ data Server
5758 }
5859 deriving (Eq, Generic, Show)
5960
61+#if MIN_VERSION_aeson(2, 2, 0)
6062serverKVs :: KeyValue e kv => Server -> [Maybe kv]
63+#else
64+serverKVs :: KeyValue kv => Server -> [Maybe kv]
65+#endif
6166serverKVs Server{branch, host, root, serverCodeVersion} =
6267 [ ("host" .=) <$> host
6368 , ("root" .=) <$> root