Current section
Files
Jump to
Current section
Files
lib/yodlee/account.ex
defmodule Yodlee.Account do
@moduledoc """
Functions for `accounts` endpoint.
"""
import Yodlee
alias Yodlee.Utils
defstruct id: nil, account_name: nil, account_number: nil, amount_due: nil, interest_rate_type: nil,
balance: nil, due_date: nil, interest_rate: nil, last_payment_amount: nil,
last_payment_date: nil, last_updated: nil, maturity_date: nil,
minimum_amount_due: nil, account_status: nil, account_type: nil,
original_loan_amount: nil, provider_id: nil, principal_balance: nil,
recurring_payment: nil, term: nil, origination_date: nil, created_date: nil,
frequency: nil, refreshinfo: nil, provider_account_id: nil
@type t :: %__MODULE__{id: integer,
account_name: String.t,
account_number: String.t,
amount_due: Yodlee.Money.t,
interest_rate_type: String.t,
balance: Yodlee.Money.t,
due_date: String.t,
interest_rate: float,
last_payment_amount: Yodlee.Money.t,
last_payment_date: String.t,
last_updated: String.t,
maturity_date: String.t,
minimum_amount_due: Yodlee.Money.t,
account_status: String.t,
account_type: String.t,
original_loan_amount: Yodlee.Money.t,
provider_id: String.t,
principal_balance: Yodlee.Money.t,
recurring_payment: Yodlee.Money.t,
term: String.t,
origination_date: String.t,
created_date: String.t,
frequency: String.t,
refreshinfo: Yodlee.Refreshinfo.t,
provider_account_id: integer
}
@type user_session :: String.t
@type error :: Yodlee.Error.t | HTTPoison.Error.t
@endpoint "accounts"
@doc """
Gets all accounts associated with User session.
```
params = %{
providerAccountId: 10502782
}
```
"""
@spec search(user_session, map) :: {:ok, [Yodlee.Account.t]} | {:error, error}
def search(session, params) do
endpoint =
case Map.keys(params) do
[] -> @endpoint
_ -> "#{@endpoint}?" <> Utils.encode_params(params)
end
make_request_in_session(:get, endpoint, session)
|> Utils.handle_resp(:account)
end
@doc """
List all accounts associated with User session.
"""
@spec list(user_session) :: {:ok, [Yodlee.Account.t]} | {:error, error}
def list(session) do
search(session, %{})
end
@doc """
Gets account by id and container.
"""
@spec get(user_session, String.t, String.t | integer) :: {:ok, [Yodlee.Account.t]} | {:error, error}
def get(session, container, id) do
endpoint = "#{@endpoint}/#{id}?container=#{container}"
make_request_in_session(:get, endpoint, session)
|> Utils.handle_resp(:account)
end
end