packages feed

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

module Patrol.Type.SystemSdkInfo where

import qualified Data.Aeson as Aeson
import qualified Data.Text as Text
import qualified Patrol.Extra.Aeson as Aeson

-- | <https://develop.sentry.dev/sdk/event-payloads/types/#systemsdkinfo>
data SystemSdkInfo = SystemSdkInfo
  { sdkName :: Text.Text,
    versionMajor :: Maybe Int,
    versionMinor :: Maybe Int,
    versionPatchlevel :: Maybe Int
  }
  deriving (Eq, Show)

instance Aeson.ToJSON SystemSdkInfo where
  toJSON systemSdkInfo =
    Aeson.intoObject
      [ Aeson.pair "sdk_name" $ sdkName systemSdkInfo,
        Aeson.pair "version_major" $ versionMajor systemSdkInfo,
        Aeson.pair "version_minor" $ versionMinor systemSdkInfo,
        Aeson.pair "version_patchlevel" $ versionPatchlevel systemSdkInfo
      ]

empty :: SystemSdkInfo
empty =
  SystemSdkInfo
    { sdkName = Text.empty,
      versionMajor = Nothing,
      versionMinor = Nothing,
      versionPatchlevel = Nothing
    }