rollbar-client 0.1.0 → 1.0.0
raw patch · 5 files changed
+44/−27 lines, 5 filesdep ~aesondep ~basenew-uploader
Dependency ranges changed: aeson, base
Files
- ChangeLog.md +12/−1
- README.md +3/−0
- rollbar-client.cabal +10/−8
- src/Rollbar/Client/Item.hs +11/−10
- test/Rollbar/ClientSpec.hs +8/−8
ChangeLog.md view
@@ -1,3 +1,14 @@ # Changelog for rollbar-client -## Unreleased changes+All notable changes to this project will be documented in this file++## [1.0.0] - 2022-12-28++### Changed++- Updated dependency aeson version.+- Updated base version++### Removed++- Support for GHC 8.6.1
README.md view
@@ -1,5 +1,8 @@ # Rollbar Client +++ Core library to communicate with [Rollbar API](https://explorer.docs.rollbar.com/).
rollbar-client.cabal view
@@ -1,16 +1,17 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.33.0.+-- This file has been generated from package.yaml by hpack version 0.34.7. -- -- see: https://github.com/sol/hpack ----- hash: b3e835bcc225cb66a06268126c5a04b48d06fd90b55677e26219ecfe207068d3+-- hash: 125ccbaa8f8a1b3dab026c05c979880711d5f61ef9cf7323bfe23bda09bb3743 name: rollbar-client-version: 0.1.0+version: 1.0.0 synopsis: Core library to communicate with Rollbar API. description: Please see the README on GitHub at <https://github.com/stackbuilders/rollbar-haskell/tree/master/rollbar-client>+category: Network homepage: https://github.com/stackbuilders/rollbar-haskell#readme bug-reports: https://github.com/stackbuilders/rollbar-haskell/issues author: Stack Builders Inc.@@ -18,7 +19,8 @@ copyright: 2020 Stack Builders Inc. license: MIT license-file: LICENSE-tested-with: GHC ==8.6.5, GHC ==8.8.4, GHC ==8.10.2+tested-with:+ GHC ==8.8.4, GHC ==8.10.2 build-type: Simple extra-source-files: README.md@@ -47,8 +49,8 @@ src ghc-options: -Wall build-depends:- aeson >=1.4 && <2- , base >=4.12 && <5+ aeson >=2.0 && <3+ , base >=4.13 && <5 , bytestring >=0.10 && <1 , directory >=1.3 && <2 , exceptions >=0.10 && <1@@ -68,7 +70,7 @@ example ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N build-depends:- base >=4.12 && <5+ base >=4.13 && <5 , rollbar-client , text if flag(example)@@ -90,7 +92,7 @@ hspec-discover:hspec-discover >=2.7 && <3 build-depends: aeson- , base >=4.12 && <5+ , base >=4.13 && <5 , hspec >=2.7 && <3 , mtl , rollbar-client
src/Rollbar/Client/Item.hs view
@@ -28,14 +28,15 @@ ) where import qualified Control.Exception as E-import qualified Data.HashMap.Strict as HM+import qualified Data.Aeson.KeyMap as KM+import qualified Data.Aeson.Key as K import qualified Data.Text as T import Control.Monad.IO.Class (MonadIO(..)) import Data.Aeson import Data.Maybe (catMaybes) import Data.Monoid (Endo(..))-import Data.Text+import Data.Text (Text) import Network.HTTP.Req import Rollbar.Client.Internal import Rollbar.Client.Settings@@ -239,7 +240,7 @@ instance ToJSON Message where toJSON Message{..} = Object $- HM.insert "body" (toJSON messageBody) messageMetadata+ KM.insert "body" (toJSON messageBody) messageMetadata -- | The severity level. One of: "critical", "error", "warning", "info", -- "debug" Defaults to "error" for exceptions and "info" for messages. The@@ -308,18 +309,18 @@ getRequestModifier = do RequestModifiers{..} <- settingsRequestModifiers <$> getSettings return $ appEndo $ mconcat $ catMaybes- [ withHeaders . excludeNames <$> requestModifiersExcludeHeaders- , withParams . excludeNames <$> requestModifiersExcludeParams- , withHeaders . includeNames <$> requestModifiersIncludeHeaders- , withParams . includeNames <$> requestModifiersIncludeParams+ [ withHeaders . excludeNames . fmap K.fromText <$> requestModifiersExcludeHeaders+ , withParams . excludeNames . fmap K.fromText <$> requestModifiersExcludeParams+ , withHeaders . includeNames . fmap K.fromText <$> requestModifiersIncludeHeaders+ , withParams . includeNames . fmap K.fromText <$> requestModifiersIncludeParams ] where withHeaders f = Endo $ \request -> request { requestHeaders = f $ requestHeaders request } withParams f = Endo $ \request -> request { requestParams = f $ requestParams request }- excludeNames names = HM.filterWithKey $ \name _ -> name `notElem` names- includeNames names = HM.filterWithKey $ \name _ -> name `elem` names+ excludeNames names = KM.filterWithKey $ \name _ -> name `notElem` names+ includeNames names = KM.filterWithKey $ \name _ -> name `elem` names -- | Data about the server related to this event. data Server = Server@@ -360,7 +361,7 @@ defaultNotifier :: Notifier defaultNotifier = Notifier { notifierName = "rollbar-client"- , notifierVersion = "0.1.0"+ , notifierVersion = "1.0.0" } newtype ItemId = ItemId Text
test/Rollbar/ClientSpec.hs view
@@ -7,7 +7,7 @@ ( spec ) where -import qualified Data.HashMap.Strict as HM+import qualified Data.Aeson.KeyMap as KM import Control.Monad.Reader import Data.Aeson@@ -41,11 +41,11 @@ request = Request { requestUrl = "http://example.com" , requestMethod = "GET"- , requestHeaders = HM.fromList+ , requestHeaders = KM.fromList [ ("Host", "example.com") , ("Secret", "p4ssw0rd") ]- , requestParams = HM.fromList+ , requestParams = KM.fromList [ ("user", "John Doe") , ("password", "p4ssw0rd") ]@@ -61,28 +61,28 @@ defaultRequestModifiers { requestModifiersExcludeHeaders = Just $ pure "Secret" } in requestModifier request `shouldBe` request- { requestHeaders = HM.fromList [("Host", "example.com")] }+ { requestHeaders = KM.fromList [("Host", "example.com")] } it "excludes the params not matching the given names" $ let requestModifier = runReader getRequestModifier $ mkSettings $ defaultRequestModifiers { requestModifiersExcludeParams = Just $ pure "password" } in requestModifier request `shouldBe` request- { requestParams = HM.fromList [("user", "John Doe")] }+ { requestParams = KM.fromList [("user", "John Doe")] } it "includes only the headers matching the given names" $ let requestModifier = runReader getRequestModifier $ mkSettings $ defaultRequestModifiers { requestModifiersIncludeHeaders = Just $ pure "Host" } in requestModifier request `shouldBe` request- { requestHeaders = HM.fromList [("Host", "example.com")] }+ { requestHeaders = KM.fromList [("Host", "example.com")] } it "includes only the params matching the given names" $ let requestModifier = runReader getRequestModifier $ mkSettings $ defaultRequestModifiers { requestModifiersIncludeParams = Just $ pure "user" } in requestModifier request `shouldBe` request- { requestParams = HM.fromList [("user", "John Doe")] }+ { requestParams = KM.fromList [("user", "John Doe")] } describe "defaultNotifier" $ it "matches the package name and version" $ do@@ -127,7 +127,7 @@ itemId <- runRollbar settings $ do item <- mkItem $ PayloadMessage $ Message { messageBody = "Request over threshold of 10 seconds"- , messageMetadata = HM.fromList+ , messageMetadata = KM.fromList [ ("route", "home#index") , ("time_elapsed", Number 15.23) ]