Current section
Files
Jump to
Current section
Files
lib/fintex.ex
defmodule FinTex do
alias FinTex.Command.FinPing
alias FinTex.Command.GetAccountsInfo
alias FinTex.Command.GetTransactions
alias FinTex.Command.InitiatePayment
alias FinTex.Model.Account
alias FinTex.Model.Bank
alias FinTex.Model.Challenge
alias FinTex.Model.Payment
alias FinTex.Model.Transaction
alias FinTex.User.ChallengeResponder
@type login :: binary
@type client_id :: binary
@type pin :: binary
@type options :: []
@spec ping(Bank.t, options) :: term
def ping(bank, options \\ []) when is_tuple(bank) and is_list(options) do
FinPing.ping(bank, options)
end
@spec accounts(Bank.t, login, client_id, pin, options) :: [Account.t]
def accounts(bank, login, client_id \\ nil, pin, options \\ [])
when is_binary(login) and is_binary(pin) and is_list(options) do
client_id = client_id(login, client_id)
GetAccountsInfo.get_account_info(bank, login, client_id, pin, options) |> Enum.to_list
end
@spec transactions(Bank.t, login, client_id, pin, Account.t, options) :: [Transaction.t]
def transactions(bank, login, client_id \\ nil, pin, account, options \\ [])
when is_binary(login) and is_binary(pin) and is_list(options) do
client_id = client_id(login, client_id)
GetTransactions.get_transactions(bank, account, login, client_id, pin, options) |> Enum.to_list
end
@spec initiate_payment(Bank.t, login, client_id, pin, Payment.t, (Challenge.t -> any), options) :: binary
def initiate_payment(bank, login, client_id \\ nil, pin, payment, callback_fn \\ &ChallengeResponder.read_user_input/1, options \\ [])
when is_function(callback_fn) and is_binary(login) and is_binary(pin) and is_list(options) do
client_id = client_id(login, client_id)
InitiatePayment.initiate_payment(bank, login, client_id, pin, payment, callback_fn, options)
end
defp client_id(login, nil), do: login
defp client_id(_, client_id), do: client_id
end