{-# LANGUAGE DeriveGeneric #-}
module Network.Bugsnag.Report
    ( BugsnagReport(..)
    , bugsnagReport
    ) where

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 Generic

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

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