Current section

Files

Jump to
podium_ex lib podium api.ex
Raw

lib/podium/api.ex

defmodule Podium.API do
@moduledoc """
Provides a basic HTTP interface to allow easy communication with the Podium
API, by wrapping `HTTPoison`.
"""
@default_base_url "https://api.podium.com/api/v2"
use HTTPoison.Base
@spec process_url(String.t()) :: String.t()
def process_url(path) do
base_url() <> path
end
@spec process_request_headers(list()) :: list()
def process_request_headers(headers) do
[
{"Accept", "application/json"},
{"Authorization", api_key()},
{"Content-Type", "application/json"},
{"Application-Uid", application_uid()}
] ++ headers
end
@spec process_request_body(map()) :: String.t()
def process_request_body(body) do
Jason.encode!(body)
end
@spec api_key() :: String.t()
defp api_key, do: Application.get_env(:podium_ex, :api_key, "")
@spec base_url() :: String.t()
defp base_url, do: Application.get_env(:podium_ex, :base_url, @default_base_url)
@spec application_uid() :: String.t()
defp application_uid, do: Application.get_env(:podium_ex, :application_uid, "")
end