{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE OverloadedStrings #-}
module StripeAPI.Types.InvoiceTransferData 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.Account
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe
data InvoiceTransferData = InvoiceTransferData
{
InvoiceTransferData -> Maybe Int
invoiceTransferDataAmount :: (GHC.Maybe.Maybe GHC.Types.Int),
InvoiceTransferData -> InvoiceTransferDataDestination'Variants
invoiceTransferDataDestination :: InvoiceTransferDataDestination'Variants
}
deriving
( Int -> InvoiceTransferData -> ShowS
[InvoiceTransferData] -> ShowS
InvoiceTransferData -> String
(Int -> InvoiceTransferData -> ShowS)
-> (InvoiceTransferData -> String)
-> ([InvoiceTransferData] -> ShowS)
-> Show InvoiceTransferData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InvoiceTransferData] -> ShowS
$cshowList :: [InvoiceTransferData] -> ShowS
show :: InvoiceTransferData -> String
$cshow :: InvoiceTransferData -> String
showsPrec :: Int -> InvoiceTransferData -> ShowS
$cshowsPrec :: Int -> InvoiceTransferData -> ShowS
GHC.Show.Show,
InvoiceTransferData -> InvoiceTransferData -> Bool
(InvoiceTransferData -> InvoiceTransferData -> Bool)
-> (InvoiceTransferData -> InvoiceTransferData -> Bool)
-> Eq InvoiceTransferData
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InvoiceTransferData -> InvoiceTransferData -> Bool
$c/= :: InvoiceTransferData -> InvoiceTransferData -> Bool
== :: InvoiceTransferData -> InvoiceTransferData -> Bool
$c== :: InvoiceTransferData -> InvoiceTransferData -> Bool
GHC.Classes.Eq
)
instance Data.Aeson.Types.ToJSON.ToJSON InvoiceTransferData where
toJSON :: InvoiceTransferData -> Value
toJSON InvoiceTransferData
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"amount" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= InvoiceTransferData -> Maybe Int
invoiceTransferDataAmount InvoiceTransferData
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"destination" Text -> InvoiceTransferDataDestination'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= InvoiceTransferData -> InvoiceTransferDataDestination'Variants
invoiceTransferDataDestination InvoiceTransferData
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
toEncoding :: InvoiceTransferData -> Encoding
toEncoding InvoiceTransferData
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"amount" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= InvoiceTransferData -> Maybe Int
invoiceTransferDataAmount InvoiceTransferData
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"destination" Text -> InvoiceTransferDataDestination'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= InvoiceTransferData -> InvoiceTransferDataDestination'Variants
invoiceTransferDataDestination InvoiceTransferData
obj))
instance Data.Aeson.Types.FromJSON.FromJSON InvoiceTransferData where
parseJSON :: Value -> Parser InvoiceTransferData
parseJSON = String
-> (Object -> Parser InvoiceTransferData)
-> Value
-> Parser InvoiceTransferData
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"InvoiceTransferData" (\Object
obj -> ((Maybe Int
-> InvoiceTransferDataDestination'Variants -> InvoiceTransferData)
-> Parser
(Maybe Int
-> InvoiceTransferDataDestination'Variants -> InvoiceTransferData)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> InvoiceTransferDataDestination'Variants -> InvoiceTransferData
InvoiceTransferData Parser
(Maybe Int
-> InvoiceTransferDataDestination'Variants -> InvoiceTransferData)
-> Parser (Maybe Int)
-> Parser
(InvoiceTransferDataDestination'Variants -> InvoiceTransferData)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"amount")) Parser
(InvoiceTransferDataDestination'Variants -> InvoiceTransferData)
-> Parser InvoiceTransferDataDestination'Variants
-> Parser InvoiceTransferData
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser InvoiceTransferDataDestination'Variants
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"destination"))
mkInvoiceTransferData ::
InvoiceTransferDataDestination'Variants ->
InvoiceTransferData
mkInvoiceTransferData :: InvoiceTransferDataDestination'Variants -> InvoiceTransferData
mkInvoiceTransferData InvoiceTransferDataDestination'Variants
invoiceTransferDataDestination =
InvoiceTransferData :: Maybe Int
-> InvoiceTransferDataDestination'Variants -> InvoiceTransferData
InvoiceTransferData
{ invoiceTransferDataAmount :: Maybe Int
invoiceTransferDataAmount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
invoiceTransferDataDestination :: InvoiceTransferDataDestination'Variants
invoiceTransferDataDestination = InvoiceTransferDataDestination'Variants
invoiceTransferDataDestination
}
data InvoiceTransferDataDestination'Variants
= InvoiceTransferDataDestination'Text Data.Text.Internal.Text
| InvoiceTransferDataDestination'Account Account
deriving (Int -> InvoiceTransferDataDestination'Variants -> ShowS
[InvoiceTransferDataDestination'Variants] -> ShowS
InvoiceTransferDataDestination'Variants -> String
(Int -> InvoiceTransferDataDestination'Variants -> ShowS)
-> (InvoiceTransferDataDestination'Variants -> String)
-> ([InvoiceTransferDataDestination'Variants] -> ShowS)
-> Show InvoiceTransferDataDestination'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InvoiceTransferDataDestination'Variants] -> ShowS
$cshowList :: [InvoiceTransferDataDestination'Variants] -> ShowS
show :: InvoiceTransferDataDestination'Variants -> String
$cshow :: InvoiceTransferDataDestination'Variants -> String
showsPrec :: Int -> InvoiceTransferDataDestination'Variants -> ShowS
$cshowsPrec :: Int -> InvoiceTransferDataDestination'Variants -> ShowS
GHC.Show.Show, InvoiceTransferDataDestination'Variants
-> InvoiceTransferDataDestination'Variants -> Bool
(InvoiceTransferDataDestination'Variants
-> InvoiceTransferDataDestination'Variants -> Bool)
-> (InvoiceTransferDataDestination'Variants
-> InvoiceTransferDataDestination'Variants -> Bool)
-> Eq InvoiceTransferDataDestination'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InvoiceTransferDataDestination'Variants
-> InvoiceTransferDataDestination'Variants -> Bool
$c/= :: InvoiceTransferDataDestination'Variants
-> InvoiceTransferDataDestination'Variants -> Bool
== :: InvoiceTransferDataDestination'Variants
-> InvoiceTransferDataDestination'Variants -> Bool
$c== :: InvoiceTransferDataDestination'Variants
-> InvoiceTransferDataDestination'Variants -> Bool
GHC.Classes.Eq)
instance Data.Aeson.Types.ToJSON.ToJSON InvoiceTransferDataDestination'Variants where
toJSON :: InvoiceTransferDataDestination'Variants -> Value
toJSON (InvoiceTransferDataDestination'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
toJSON (InvoiceTransferDataDestination'Account Account
a) = Account -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Account
a
instance Data.Aeson.Types.FromJSON.FromJSON InvoiceTransferDataDestination'Variants where
parseJSON :: Value -> Parser InvoiceTransferDataDestination'Variants
parseJSON Value
val = case (Text -> InvoiceTransferDataDestination'Variants
InvoiceTransferDataDestination'Text (Text -> InvoiceTransferDataDestination'Variants)
-> Result Text -> Result InvoiceTransferDataDestination'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result InvoiceTransferDataDestination'Variants
-> Result InvoiceTransferDataDestination'Variants
-> Result InvoiceTransferDataDestination'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Account -> InvoiceTransferDataDestination'Variants
InvoiceTransferDataDestination'Account (Account -> InvoiceTransferDataDestination'Variants)
-> Result Account -> Result InvoiceTransferDataDestination'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Account
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result InvoiceTransferDataDestination'Variants
-> Result InvoiceTransferDataDestination'Variants
-> Result InvoiceTransferDataDestination'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result InvoiceTransferDataDestination'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
Data.Aeson.Types.Internal.Success InvoiceTransferDataDestination'Variants
a -> InvoiceTransferDataDestination'Variants
-> Parser InvoiceTransferDataDestination'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure InvoiceTransferDataDestination'Variants
a
Data.Aeson.Types.Internal.Error String
a -> String -> Parser InvoiceTransferDataDestination'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a