packages feed

patrol-0.1.0.1: source/library/Patrol/Type/MechanismMeta.hs

module Patrol.Type.MechanismMeta where

import qualified Data.Aeson as Aeson
import qualified Patrol.Extra.Aeson as Aeson
import qualified Patrol.Type.CError as CError
import qualified Patrol.Type.MachException as MachException
import qualified Patrol.Type.NsError as NsError
import qualified Patrol.Type.PosixSignal as PosixSignal

-- | <https://develop.sentry.dev/sdk/event-payloads/types/#mechanismmeta>
data MechanismMeta = MechanismMeta
  { errno :: Maybe CError.CError,
    machException :: Maybe MachException.MachException,
    nsError :: Maybe NsError.NsError,
    signal :: Maybe PosixSignal.PosixSignal
  }
  deriving (Eq, Show)

instance Aeson.ToJSON MechanismMeta where
  toJSON mechanismMeta =
    Aeson.intoObject
      [ Aeson.pair "errno" $ errno mechanismMeta,
        Aeson.pair "mach_exception" $ machException mechanismMeta,
        Aeson.pair "ns_error" $ nsError mechanismMeta,
        Aeson.pair "signal" $ signal mechanismMeta
      ]

empty :: MechanismMeta
empty =
  MechanismMeta
    { errno = Nothing,
      machException = Nothing,
      nsError = Nothing,
      signal = Nothing
    }