{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE OverloadedStrings #-}
module StripeAPI.Types.GelatoVerificationSessionOptions where
import qualified Control.Monad.Fail
import qualified Data.Aeson
import qualified Data.Aeson as Data.Aeson.Encoding.Internal
import qualified Data.Aeson as Data.Aeson.Types
import qualified Data.Aeson as Data.Aeson.Types.FromJSON
import qualified Data.Aeson as Data.Aeson.Types.Internal
import qualified Data.Aeson as Data.Aeson.Types.ToJSON
import qualified Data.ByteString.Char8
import qualified Data.ByteString.Char8 as Data.ByteString.Internal
import qualified Data.Functor
import qualified Data.Scientific
import qualified Data.Text
import qualified Data.Text.Internal
import qualified Data.Time.Calendar as Data.Time.Calendar.Days
import qualified Data.Time.LocalTime as Data.Time.LocalTime.Internal.ZonedTime
import qualified GHC.Base
import qualified GHC.Classes
import qualified GHC.Int
import qualified GHC.Show
import qualified GHC.Types
import qualified StripeAPI.Common
import StripeAPI.TypeAlias
import {-# SOURCE #-} StripeAPI.Types.GelatoSessionDocumentOptions
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe
data GelatoVerificationSessionOptions = GelatoVerificationSessionOptions
{
GelatoVerificationSessionOptions
-> Maybe GelatoSessionDocumentOptions
gelatoVerificationSessionOptionsDocument :: (GHC.Maybe.Maybe GelatoSessionDocumentOptions),
GelatoVerificationSessionOptions
-> Maybe GelatoSessionIdNumberOptions
gelatoVerificationSessionOptionsIdNumber :: (GHC.Maybe.Maybe GelatoSessionIdNumberOptions)
}
deriving
( Int -> GelatoVerificationSessionOptions -> ShowS
[GelatoVerificationSessionOptions] -> ShowS
GelatoVerificationSessionOptions -> String
(Int -> GelatoVerificationSessionOptions -> ShowS)
-> (GelatoVerificationSessionOptions -> String)
-> ([GelatoVerificationSessionOptions] -> ShowS)
-> Show GelatoVerificationSessionOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GelatoVerificationSessionOptions] -> ShowS
$cshowList :: [GelatoVerificationSessionOptions] -> ShowS
show :: GelatoVerificationSessionOptions -> String
$cshow :: GelatoVerificationSessionOptions -> String
showsPrec :: Int -> GelatoVerificationSessionOptions -> ShowS
$cshowsPrec :: Int -> GelatoVerificationSessionOptions -> ShowS
GHC.Show.Show,
GelatoVerificationSessionOptions
-> GelatoVerificationSessionOptions -> Bool
(GelatoVerificationSessionOptions
-> GelatoVerificationSessionOptions -> Bool)
-> (GelatoVerificationSessionOptions
-> GelatoVerificationSessionOptions -> Bool)
-> Eq GelatoVerificationSessionOptions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GelatoVerificationSessionOptions
-> GelatoVerificationSessionOptions -> Bool
$c/= :: GelatoVerificationSessionOptions
-> GelatoVerificationSessionOptions -> Bool
== :: GelatoVerificationSessionOptions
-> GelatoVerificationSessionOptions -> Bool
$c== :: GelatoVerificationSessionOptions
-> GelatoVerificationSessionOptions -> Bool
GHC.Classes.Eq
)
instance Data.Aeson.Types.ToJSON.ToJSON GelatoVerificationSessionOptions where
toJSON :: GelatoVerificationSessionOptions -> Value
toJSON GelatoVerificationSessionOptions
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"document" Text -> Maybe GelatoSessionDocumentOptions -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoVerificationSessionOptions
-> Maybe GelatoSessionDocumentOptions
gelatoVerificationSessionOptionsDocument GelatoVerificationSessionOptions
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"id_number" Text -> Maybe GelatoSessionIdNumberOptions -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoVerificationSessionOptions
-> Maybe GelatoSessionIdNumberOptions
gelatoVerificationSessionOptionsIdNumber GelatoVerificationSessionOptions
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
toEncoding :: GelatoVerificationSessionOptions -> Encoding
toEncoding GelatoVerificationSessionOptions
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"document" Text -> Maybe GelatoSessionDocumentOptions -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoVerificationSessionOptions
-> Maybe GelatoSessionDocumentOptions
gelatoVerificationSessionOptionsDocument GelatoVerificationSessionOptions
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"id_number" Text -> Maybe GelatoSessionIdNumberOptions -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GelatoVerificationSessionOptions
-> Maybe GelatoSessionIdNumberOptions
gelatoVerificationSessionOptionsIdNumber GelatoVerificationSessionOptions
obj))
instance Data.Aeson.Types.FromJSON.FromJSON GelatoVerificationSessionOptions where
parseJSON :: Value -> Parser GelatoVerificationSessionOptions
parseJSON = String
-> (GelatoSessionIdNumberOptions
-> Parser GelatoVerificationSessionOptions)
-> Value
-> Parser GelatoVerificationSessionOptions
forall a.
String
-> (GelatoSessionIdNumberOptions -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GelatoVerificationSessionOptions" (\GelatoSessionIdNumberOptions
obj -> ((Maybe GelatoSessionDocumentOptions
-> Maybe GelatoSessionIdNumberOptions
-> GelatoVerificationSessionOptions)
-> Parser
(Maybe GelatoSessionDocumentOptions
-> Maybe GelatoSessionIdNumberOptions
-> GelatoVerificationSessionOptions)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe GelatoSessionDocumentOptions
-> Maybe GelatoSessionIdNumberOptions
-> GelatoVerificationSessionOptions
GelatoVerificationSessionOptions Parser
(Maybe GelatoSessionDocumentOptions
-> Maybe GelatoSessionIdNumberOptions
-> GelatoVerificationSessionOptions)
-> Parser (Maybe GelatoSessionDocumentOptions)
-> Parser
(Maybe GelatoSessionIdNumberOptions
-> GelatoVerificationSessionOptions)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (GelatoSessionIdNumberOptions
obj GelatoSessionIdNumberOptions
-> Text -> Parser (Maybe GelatoSessionDocumentOptions)
forall a.
FromJSON a =>
GelatoSessionIdNumberOptions -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"document")) Parser
(Maybe GelatoSessionIdNumberOptions
-> GelatoVerificationSessionOptions)
-> Parser (Maybe GelatoSessionIdNumberOptions)
-> Parser GelatoVerificationSessionOptions
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (GelatoSessionIdNumberOptions
obj GelatoSessionIdNumberOptions
-> Text -> Parser (Maybe GelatoSessionIdNumberOptions)
forall a.
FromJSON a =>
GelatoSessionIdNumberOptions -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"id_number"))
mkGelatoVerificationSessionOptions :: GelatoVerificationSessionOptions
mkGelatoVerificationSessionOptions :: GelatoVerificationSessionOptions
mkGelatoVerificationSessionOptions =
GelatoVerificationSessionOptions :: Maybe GelatoSessionDocumentOptions
-> Maybe GelatoSessionIdNumberOptions
-> GelatoVerificationSessionOptions
GelatoVerificationSessionOptions
{ gelatoVerificationSessionOptionsDocument :: Maybe GelatoSessionDocumentOptions
gelatoVerificationSessionOptionsDocument = Maybe GelatoSessionDocumentOptions
forall a. Maybe a
GHC.Maybe.Nothing,
gelatoVerificationSessionOptionsIdNumber :: Maybe GelatoSessionIdNumberOptions
gelatoVerificationSessionOptionsIdNumber = Maybe GelatoSessionIdNumberOptions
forall a. Maybe a
GHC.Maybe.Nothing
}