1
- {-# LANGUAGE FlexibleContexts #-}
2
- {-# LANGUAGE ScopedTypeVariables #-}
1
+ {-# LANGUAGE OverloadedStrings #-}
3
2
4
3
-- | Main entry point to the application.
5
4
module Rollbar
@@ -20,17 +19,18 @@ module Rollbar
20
19
, buildJSON
21
20
) where
22
21
23
- import qualified Control.Exception as Ex
22
+ import Control.Exception qualified as Ex
24
23
import Control.Exception.Lifted (catch )
25
- import qualified Control.Monad as Monad
26
- import qualified Control.Monad.IO.Class as MIO
24
+ import Control.Monad qualified as Monad
25
+ import Control.Monad.IO.Class qualified as MIO
27
26
import Control.Monad.Trans.Control (MonadBaseControl )
28
27
import Data.Aeson ((.:) , (.=) )
29
- import qualified Data.Aeson as Aeson
28
+ import Data.Aeson qualified as Aeson
30
29
import Data.Aeson.Types (parseMaybe )
31
- import qualified Data.Maybe as Maybe
32
- import qualified Data.Text as T
33
- import qualified Data.Vector as V
30
+ import Data.Maybe qualified as Maybe
31
+ import Data.Text qualified as T
32
+ import Data.Text.Encoding qualified as Enc
33
+ import Data.Vector qualified as V
34
34
import GHC.Stack (CallStack , SrcLoc (.. ), getCallStack )
35
35
import Network.HTTP.Conduit
36
36
( Request (method , requestBody )
@@ -39,6 +39,7 @@ import Network.HTTP.Conduit
39
39
, httpLbs
40
40
, newManager
41
41
, parseUrlThrow
42
+ , requestHeaders
42
43
, tlsManagerSettings
43
44
)
44
45
@@ -70,7 +71,6 @@ data Settings = Settings
70
71
, hostName :: String
71
72
, reportErrors :: Bool
72
73
}
73
- deriving (Show )
74
74
75
75
data Options = Options
76
76
{ optionsPerson :: Maybe Person
@@ -176,11 +176,16 @@ reportErrorSWithOptions settings opts section loggerS msg fingerprint callstack
176
176
do
177
177
logger msg
178
178
MIO. liftIO $ do
179
- initReq <- parseUrlThrow " https://api.rollbar.com/api/1/item/"
179
+ unauthenticatedReq <- parseUrlThrow " https://api.rollbar.com/api/1/item/"
180
180
manager <- newManager tlsManagerSettings
181
181
let
182
- req = initReq {method = " POST" , requestBody = RequestBodyLBS $ Aeson. encode rollbarJson}
183
- response <- httpLbs req manager
182
+ authenticatedRequest =
183
+ unauthenticatedReq
184
+ { method = " POST"
185
+ , requestHeaders = [(" X-Rollbar-Access-Token" , Enc. encodeUtf8 . unApiToken $ token settings)]
186
+ , requestBody = RequestBodyLBS $ Aeson. encode rollbarJson
187
+ }
188
+ response <- httpLbs authenticatedRequest manager
184
189
let
185
190
body = responseBody response
186
191
uuid =
@@ -222,12 +227,13 @@ buildJSON ::
222
227
Aeson. Value
223
228
buildJSON settings opts section msg fingerprint callstack level =
224
229
Aeson. object
225
- [ " access_token" .= unApiToken (token settings)
226
- , " data"
230
+ [ " data"
227
231
.= Aeson. object
228
232
( [ " environment" .= T. toLower (unEnvironment $ environment settings)
229
233
, " level" .= Aeson. toJSON level
230
- , " server" .= Aeson. object [" host" .= hostName settings, " sha" .= optionsRevisionSha opts]
234
+ , " code_version" .= optionsRevisionSha opts
235
+ , " language" .= (" haskell" :: T. Text )
236
+ , " server" .= Aeson. object [" host" .= hostName settings]
231
237
, " person" .= Aeson. toJSON (optionsPerson opts)
232
238
, " body"
233
239
.= Aeson. object
0 commit comments