module Network.Bugsnag.Report
    ( BugsnagReport(..)
    , bugsnagReport
    )
where

import Prelude

import Data.Aeson
import Data.Aeson.Ext
import GHC.Generics
import Network.Bugsnag.Event
import Network.Bugsnag.Notifier

data BugsnagReport = BugsnagReport
    { brNotifier :: BugsnagNotifier
    , brEvents :: [BugsnagEvent]
    }
    deriving stock Generic

instance ToJSON BugsnagReport where
    toJSON = genericToJSON $ bsAesonOptions "br"
    toEncoding = genericToEncoding $ bsAesonOptions "br"

bugsnagReport :: [BugsnagEvent] -> BugsnagReport
bugsnagReport events =
    BugsnagReport { brNotifier = bugsnagNotifier, brEvents = events }