Current section
Files
Jump to
Current section
Files
lib/affirm.ex
defmodule Affirm do
@moduledoc """
Affirm client library for Elixir.
For api reference, please visit:
https://docs.affirm.com/Integrate_Affirm/Direct_API
Defines a `__using__` macro for ease of use inside implementation modules
For example:
defmodule AffirmService do
use Affirm
def attempt_capture(charge_id) do
case capture(charge_id) do
{:ok, response} -> # do success things
{:error, message} -> # do failure things
end
end
end
"""
defmodule ConfigError do
defexception [:message]
@spec exception(String.t) :: struct
def exception(value) do
message = "missing config for :#{value}"
%ConfigError{message: message}
end
end
defmacro __using__(_) do
quote do
import Affirm.API
end
end
@doc """
Convenience function for retrieving Affirm specfic environment values, but
will raise an exception if values are missing.
## Example
iex> Affirm.get_env(:random_value)
** (Affirm.ConfigError) missing config for :random_value
"""
@spec get_env(atom) :: any
def get_env(key) do
Application.get_env(:affirm, key) || raise ConfigError, key
end
end