Packages

Elixir library for Xendit based on https://developers.xendit.co/api-reference

Current section

Files

Jump to
ex_xendit lib ex_xendit.ex
Raw

lib/ex_xendit.ex

defmodule ExXendit do
@moduledoc """
Handles base http requests
"""
@doc false
def get(url, params) do
url = parse_url(url, params)
init()
|> auth()
|> Req.get(url: url)
end
@doc false
def get(url, sub_account_id, params) do
url = parse_url(url, params)
init()
|> auth()
|> sub_account(sub_account_id)
|> Req.get(url: url)
end
defp parse_url(url, nil), do: url
defp parse_url(url, params), do: url <> "?" <> URI.encode_query(params)
defp init do
base_url = Application.get_env(:ex_xendit, :base_url)
Req.new(base_url: base_url)
end
defp auth(req) do
username = Application.get_env(:ex_xendit, :secret_key)
key = Base.encode64("#{username}:")
req
|> Req.Request.put_headers([
{"Content-Type", "application/json"},
{"Authorization", "Basic #{key}"}
])
end
defp sub_account(req, id) do
req
|> Req.Request.put_headers([
{"for-user-id", id}
])
end
@typedoc """
The id of the sub-account.
"""
@type sub_account_id() :: String.t()
end