packages feed

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

module Data.Bugsnag.Types.Application
  ( Application (..)
  , exampleApplication
  ) where

import Data.Bugsnag.Types.Prelude

import Data.Bugsnag.Types.BinaryArch

-- | Information about the app where the error occurred. These fields are
-- optional but highly recommended. To display custom app data alongside
-- these standard fields on the dashboard, the custom data should be
-- included in the @metaData@ object in an @app@ object.
data Application = Application
  { id :: Maybe Text
  -- ^ A unique ID for the application.
  , version :: Maybe Text
  -- ^ The version number of the application which generated the error.
  , versionCode :: Maybe Int
  -- ^ The
  -- <https://developer.android.com/studio/publish/versioning.html version code>
  -- of the application (Android only)
  , bundleVersion :: Maybe Text
  -- ^ The
  -- <https://developer.apple.com/library/content/technotes/tn2420/_index.html bundle version\/build number>
  -- of the application (iOS\/macOS\/tvOS only)
  , codeBundleId :: Maybe Text
  -- ^ A unique identifier to identify a code bundle release when using tools
  -- like CodePush (mobile only).
  , buildUUID :: Maybe Text
  -- ^ A build ID that is required to identify a specific build when the
  -- version and version code are the same.
  , releaseStage :: Maybe Text
  -- ^ The release stage that this error occurred in, for example
  -- \"development\", \"staging\" or \"production\".
  , type_ :: Maybe Text
  -- ^ A specialized type of the application, such as the worker queue or web
  -- framework used, like \"rails\", \"mailman\", or \"celery\".
  , dsymUUIDs :: Maybe [Text]
  -- ^ The UUIDs of the <http://lldb.llvm.org/symbols.html debug symbols file>
  -- corresponding to this application, if any.
  , duration :: Maybe Int
  -- ^ How long the app has been running for in milliseconds.
  , durationInForeground :: Maybe Int
  -- ^ How long the app has been in the foreground of the device in
  -- milliseconds.
  , inForeground :: Maybe Bool
  -- ^ Whether or not the app was in the foreground when the error occurred.
  , isLaunching :: Maybe Bool
  -- ^ Whether or not the app was still launching when the error occurred.
  , binaryArch :: Maybe BinaryArch
  -- ^ The architecture of the running binary.
  , runningOnRosetta :: Maybe Bool
  -- ^ Whether the application is running on the Rosetta emulator for Mac.
  }
  deriving stock (Eq, Show, Generic)

instance FromJSON Application where
  parseJSON = genericParseJSON aesonOptions

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

exampleApplication :: Application
exampleApplication = Application
  { id = Just "com.bugsnag.android.example.debug"
  , version = Just "1.1.3"
  , versionCode = Just 12
  , bundleVersion = Just "1.0.2"
  , codeBundleId = Just "1.0-1234"
  , buildUUID = Just "BE5BA3D0-971C-4418-9ECF-E2D1ABCB66BE"
  , releaseStage = Just "staging"
  , type_ = Just "rails"
  , dsymUUIDs = Just ["e6173678256785afd940392abee"]
  , duration = Just 1275
  , durationInForeground = Just 983
  , inForeground = Just True
  , isLaunching = Just True
  , binaryArch = Just exampleBinaryArch
  , runningOnRosetta = Just True
  }