module Network.Bugsnag.User
    ( BugsnagUser(..)
    , bugsnagUser
    )
where

import Prelude

import Data.Aeson
import Data.Aeson.Ext
import Data.Text (Text)
import GHC.Generics

data BugsnagUser = BugsnagUser
    { BugsnagUser -> Maybe Text
buId :: Maybe Text
    , BugsnagUser -> Maybe Text
buEmailAddress :: Maybe Text
    , BugsnagUser -> Maybe Text
buUsername :: Maybe Text
    }
    deriving stock (forall x. BugsnagUser -> Rep BugsnagUser x)
-> (forall x. Rep BugsnagUser x -> BugsnagUser)
-> Generic BugsnagUser
forall x. Rep BugsnagUser x -> BugsnagUser
forall x. BugsnagUser -> Rep BugsnagUser x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep BugsnagUser x -> BugsnagUser
$cfrom :: forall x. BugsnagUser -> Rep BugsnagUser x
Generic

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

bugsnagUser :: BugsnagUser
bugsnagUser :: BugsnagUser
bugsnagUser = BugsnagUser :: Maybe Text -> Maybe Text -> Maybe Text -> BugsnagUser
BugsnagUser
    { buId :: Maybe Text
buId = Maybe Text
forall a. Maybe a
Nothing
    , buEmailAddress :: Maybe Text
buEmailAddress = Maybe Text
forall a. Maybe a
Nothing
    , buUsername :: Maybe Text
buUsername = Maybe Text
forall a. Maybe a
Nothing
    }