module Web.Stripe.Transfer
(
createTransfer
, getTransfer
, getTransferExpandable
, getTransfers
, getTransfersExpandable
, updateTransfer
, cancelTransfer
, Transfer (..)
, TransferId (..)
, TransferStatus (..)
, TransferType (..)
, RecipientId (..)
, Recipient (..)
, StripeList (..)
, Currency (..)
, Amount
, Limit
) where
import Web.Stripe.Client.Internal (Method (GET, POST), Stripe,
StripeRequest (..), callAPI,
getParams, toExpandable, toTextLower,
toMetaData, toText, (</>))
import Web.Stripe.Types (Amount, Currency (..),
EndingBefore, ExpandParams, Limit,
MetaData, RecipientId (..), Recipient(..),
StartingAfter, StripeList (..),
Transfer (..), TransferId (..),
TransferStatus (..),Description,
TransferType (..))
import Web.Stripe.Types.Util (getRecipientId)
createTransfer
:: RecipientId
-> Amount
-> Currency
-> MetaData
-> Stripe Transfer
createTransfer
recipientid
amount
currency
metadata = callAPI request
where request = StripeRequest POST url params
url = "transfers"
params = toMetaData metadata ++ getParams [
("amount", toText `fmap` Just amount)
, ("currency", toTextLower `fmap` Just currency)
, ("recipient", getRecipientId `fmap` Just recipientid)
]
getTransfer
:: TransferId
-> Stripe Transfer
getTransfer transferid =
getTransferExpandable transferid []
getTransferExpandable
:: TransferId
-> ExpandParams
-> Stripe Transfer
getTransferExpandable
(TransferId transferid)
expandParams = callAPI request
where request = StripeRequest GET url params
url = "transfers" </> transferid
params = toExpandable expandParams
getTransfers
:: Limit
-> StartingAfter TransferId
-> EndingBefore TransferId
-> Stripe (StripeList Transfer)
getTransfers
limit
startingAfter
endingBefore =
getTransfersExpandable limit startingAfter endingBefore []
getTransfersExpandable
:: Limit
-> StartingAfter TransferId
-> EndingBefore TransferId
-> ExpandParams
-> Stripe (StripeList Transfer)
getTransfersExpandable
limit
startingAfter
endingBefore
expandParams = callAPI request
where request = StripeRequest GET url params
url = "transfers"
params = getParams [
("limit", toText `fmap` limit )
, ("starting_after", (\(TransferId x) -> x) `fmap` startingAfter)
, ("ending_before", (\(TransferId x) -> x) `fmap` endingBefore)
] ++ toExpandable expandParams
updateTransfer
:: TransferId
-> Maybe Description
-> MetaData
-> Stripe Transfer
updateTransfer
(TransferId transferid)
description
metadata = callAPI request
where request = StripeRequest POST url params
url = "transfers" </> transferid
params = toMetaData metadata ++ getParams [
("description", description)
]
cancelTransfer
:: TransferId
-> Stripe Transfer
cancelTransfer (TransferId transferid) = callAPI request
where request = StripeRequest POST url params
url = "transfers" </> transferid </> "cancel"
params = []