module Network.Bugsnag.Event
( BugsnagEvent(..)
, bugsnagEvent
) where
import Data.Aeson
import Data.Aeson.Ext
import Data.List.NonEmpty (NonEmpty)
import Data.Text (Text)
import GHC.Generics
import Network.Bugsnag.App
import Network.Bugsnag.Breadcrumb
import Network.Bugsnag.Device
import Network.Bugsnag.Exception
import Network.Bugsnag.Request
import Network.Bugsnag.Severity
import Network.Bugsnag.Thread
import Network.Bugsnag.User
data BugsnagEvent = BugsnagEvent
{ beExceptions :: NonEmpty BugsnagException
, beBreadcrumbs :: Maybe [BugsnagBreadcrumb]
, beRequest :: Maybe BugsnagRequest
, beThreads :: Maybe [BugsnagThread]
, beContext :: Maybe Text
, beGroupingHash :: Maybe Text
, beUnhandled :: Maybe Bool
, beSeverity :: Maybe BugsnagSeverity
, beSeverityReason :: Maybe BugsnagSeverityReason
, beUser :: Maybe BugsnagUser
, beApp :: Maybe BugsnagApp
, beDevice :: Maybe BugsnagDevice
, beMetaData :: Maybe Value
}
deriving Generic
instance ToJSON BugsnagEvent where
toJSON = genericToJSON $ bsAesonOptions "be"
toEncoding = genericToEncoding $ bsAesonOptions "be"
bugsnagEvent :: NonEmpty BugsnagException -> BugsnagEvent
bugsnagEvent exceptions = BugsnagEvent
{ beExceptions = exceptions
, beBreadcrumbs = Nothing
, beRequest = Nothing
, beThreads = Nothing
, beContext = Nothing
, beGroupingHash = Nothing
, beUnhandled = Nothing
, beSeverity = Nothing
, beSeverityReason = Nothing
, beUser = Nothing
, beApp = Nothing
, beDevice = Nothing
, beMetaData = Nothing
}