{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} module Network.Bugsnag.Breadcrumb ( BugsnagBreadcrumbType(..) , BugsnagBreadcrumb(..) , bugsnagBreadcrumb ) where import Data.Aeson import Data.Aeson.Ext import Data.Text (Text) import Data.Time import GHC.Generics data BugsnagBreadcrumbType = NavigationBreadcrumb | RequestBreadcrumb | ProcessBreadcrumb | LogBreadcrumb | UserBreadcrumb | StateBreadcrumb | ErrorBreadcrumb | ManualBreadcrumb deriving Generic instance ToJSON BugsnagBreadcrumbType where toJSON = genericToJSON $ bsAesonOptions "Breadcrumb" toEncoding = genericToEncoding $ bsAesonOptions "Breadcrumb" data BugsnagBreadcrumb = BugsnagBreadcrumb { bbTimestamp :: UTCTime , bbName :: Text , bbType :: BugsnagBreadcrumbType , bbMetaData :: Maybe Value } deriving Generic instance ToJSON BugsnagBreadcrumb where toJSON = genericToJSON $ bsAesonOptions "bb" toEncoding = genericToEncoding $ bsAesonOptions "bb" bugsnagBreadcrumb :: UTCTime -> Text -> BugsnagBreadcrumbType -> BugsnagBreadcrumb bugsnagBreadcrumb timestamp name typ = BugsnagBreadcrumb { bbTimestamp = timestamp , bbName = name , bbType = typ , bbMetaData = Nothing }