Current section

Files

Jump to
yodlee lib yodlee.ex
Raw

lib/yodlee.ex

defmodule Yodlee do
use Application
require Logger
@request_handler Application.get_env(:yodlee, :request_handler) || Yodlee.Handler
@default_cobrand_name Application.get_env(:yodlee, :default_cobrand_name) || "restserver"
def start do
@request_handler.start
Yodlee.Supervisor.start_link
end
def start(_type, _process) do
start
end
def default_cobrand_name do
@default_cobrand_name
end
def as_cob(cob_username, cob_password, x) do
%{"session" => %{
"cobSession" => tok}
} = case Yodlee.Cobrand.login(cob_username, cob_password) do
{:ok, resp} -> resp
err ->
IO.inspect err
err
end
try do
case x.(tok) do
{:ok, res} -> {:ok, res}
{:error, e} -> {:error, e}
y -> {:ok, y}
end
rescue e ->
{:error, e}
end
end
def as_cob!(cob_username, cob_password, x) do
{:ok, res} = as_cob(cob_username, cob_password, x)
res
end
def as_cob_and_user(cob_username, cob_password, username, password, x) do
%{"session" => %{ "cobSession" => tok}}
= Yodlee.Cobrand.login! cob_username, cob_password
%{"user" => %{
"session" => %{ "userSession" => user_tok }
}} = Yodlee.User.login! tok, username, password
try do
case x.({tok, user_tok}) do
{:ok, res} -> {:ok, res}
{:error, e} -> {:error, e}
y -> {:ok, y}
end
rescue e ->
{:error, e}
end
end
def as_cob_and_user!(cob_username, cob_password, username, password, x) do
{:ok, res} = as_cob_and_user(cob_username, cob_password, username, password, x)
res
end
def make_request(method, endpoint, body \\ [], headers \\ [], options \\ []) do
complete_headers = List.flatten(headers, [
"Content-Type": "application/json",
"accept": "application/json"
])
case method do
"get" ->
complete_endpoint = "#{endpoint}?#{URI.encode_query(body)}"
case @request_handler.make_request(method, complete_endpoint, %{}, complete_headers, options) do
{:ok, resp} ->
{:ok, resp}
{:error, errorResp} ->
{:error, errorResp[:Error]}
end
_ ->
case @request_handler.make_request(method, endpoint, body, complete_headers, options) do
{:ok, resp} ->
{:ok, resp}
{:error, errorResp} ->
{:error, errorResp[:Error]}
end
end
end
def make_authenticated_request(creds, method, endpoint, body \\ [], headers \\ [], options \\ []) do
auth_token = case creds do
{cob, usr} -> "{cobSession=#{cob}, userSession=#{usr}}"
cob -> "{cobSession=#{cob}}"
end
complete_headers = List.flatten(headers, [
"Authorization": auth_token
])
make_request(method, endpoint, body, complete_headers, options)
end
end
Yodlee.start