module Network.Bugsnag.Thread
    ( BugsnagThread(..)
    , bugsnagThread
    ) where

import Prelude

import Data.Aeson
import Data.Aeson.Ext
import Data.Text (Text)
import GHC.Generics
import Network.Bugsnag.StackFrame

data BugsnagThread = BugsnagThread
    { BugsnagThread -> Maybe Text
btId :: Maybe Text
    , BugsnagThread -> Maybe Text
btName :: Maybe Text
    , BugsnagThread -> Maybe [BugsnagStackFrame]
btStacktrace :: Maybe [BugsnagStackFrame]
    }
    deriving stock (forall x. BugsnagThread -> Rep BugsnagThread x)
-> (forall x. Rep BugsnagThread x -> BugsnagThread)
-> Generic BugsnagThread
forall x. Rep BugsnagThread x -> BugsnagThread
forall x. BugsnagThread -> Rep BugsnagThread x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep BugsnagThread x -> BugsnagThread
$cfrom :: forall x. BugsnagThread -> Rep BugsnagThread x
Generic

instance ToJSON BugsnagThread where
    toJSON :: BugsnagThread -> Value
toJSON = Options -> BugsnagThread -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON (Options -> BugsnagThread -> Value)
-> Options -> BugsnagThread -> Value
forall a b. (a -> b) -> a -> b
$ String -> Options
bsAesonOptions String
"bt"
    toEncoding :: BugsnagThread -> Encoding
toEncoding = Options -> BugsnagThread -> Encoding
forall a.
(Generic a, GToJSON' Encoding Zero (Rep a)) =>
Options -> a -> Encoding
genericToEncoding (Options -> BugsnagThread -> Encoding)
-> Options -> BugsnagThread -> Encoding
forall a b. (a -> b) -> a -> b
$ String -> Options
bsAesonOptions String
"bt"

bugsnagThread :: BugsnagThread
bugsnagThread :: BugsnagThread
bugsnagThread =
    BugsnagThread :: Maybe Text
-> Maybe Text -> Maybe [BugsnagStackFrame] -> BugsnagThread
BugsnagThread { btId :: Maybe Text
btId = Maybe Text
forall a. Maybe a
Nothing, btName :: Maybe Text
btName = Maybe Text
forall a. Maybe a
Nothing, btStacktrace :: Maybe [BugsnagStackFrame]
btStacktrace = Maybe [BugsnagStackFrame]
forall a. Maybe a
Nothing }