{-# LANGUAGE OverloadedStrings #-} -- | -- -- Report an error to Bugsnag -- -- -- -- This is the lowest level interface, where you're required to provide all -- payload data explicitly, as well as a TLS-enabled @'Manager'@ -- module Network.Bugsnag.Reporter ( reportError ) where import Control.Monad (void) import Data.Text.Encoding (encodeUtf8) import Network.Bugsnag.Report import Network.Bugsnag.Settings import Network.HTTP.Client import Network.HTTP.Simple (setRequestBodyJSON, setRequestHeader) reportError :: Manager -> BugsnagApiKey -> BugsnagReport -> IO () reportError manager apiKey report = do request <- setupRequest <$> parseRequest "POST https://notify.bugsnag.com" void $ httpNoBody request manager where key = encodeUtf8 $ unBugsnagApiKey apiKey setupRequest = setRequestBodyJSON report . setRequestHeader "Bugsnag-Api-Key" [key] . setRequestHeader "Bugsnag-Payload-Version" ["4"]