packages feed

bugsnag-types-1.1.0.1: src/Data/Bugsnag/Types/SeverityReasonAttributes.hs

module Data.Bugsnag.Types.SeverityReasonAttributes
  ( SeverityReasonAttributes (..)
  , exampleSeverityReasonAttributes
  ) where

import Data.Bugsnag.Types.Prelude

-- | Optional attributes to provide extra information about the severity
-- reason.
data SeverityReasonAttributes = SeverityReasonAttributes
  { errorType :: Maybe Text
  -- ^ Included for @unhandledError@ severity reason. See
  -- <http://php.net/manual/en/errorfunc.constants.php PHP Error Constants>.
  , level :: Maybe Text
  -- ^ Included for @log@ severity reason.
  , signalType :: Maybe Text
  -- ^ Included for @signal@ severity reason. See
  -- <https://en.wikipedia.org/wiki/C_signal_handling Signal Codes>.
  , violationType :: Maybe Text
  -- ^ Included for @strictMode@ severity reason. See
  -- <https://developer.android.com/reference/android/os/StrictMode.html Strict Mode>.
  , errorClass :: Maybe Text
  -- ^ Included for @errorClass@ severity reason. Specifies the error class
  -- that is automatically sent.
  , framework :: Maybe Text
  -- ^ Included for middleware severity reasons, specifies the middleware that
  -- had an error.
  , exceptionClass :: Maybe Text
  -- ^ Included for @exceptionClass@ severity reason. Specifies the error class
  -- that is automatically sent.
  }
  deriving stock (Eq, Show, Generic)

instance FromJSON SeverityReasonAttributes where
  parseJSON = genericParseJSON aesonOptions

instance ToJSON SeverityReasonAttributes where
  toJSON = genericToJSON aesonOptions
  toEncoding = genericToEncoding aesonOptions

exampleSeverityReasonAttributes :: SeverityReasonAttributes
exampleSeverityReasonAttributes = SeverityReasonAttributes
  { errorType = Just "E_ERROR"
  , level = Just "Error"
  , signalType = Just "SIGSEGV"
  , violationType = Just "NetworkOnMainThread"
  , errorClass = Just "ActiveRecord::RecordNotFound"
  , framework = Just "Rack"
  , exceptionClass = Just "TypeMismatchException"
  }