Current section
Files
Jump to
Current section
Files
lib/ex_chimp/client.ex
defmodule ExChimp.Client do
@moduledoc """
API client.
"""
use HTTPoison.Base
def process_request_url(url), do: base_url() <> url
def process_response_body(""), do: nil
def process_response_body(body), do: Jason.decode!(body)
def process_request_headers(headers) do
base_api_key = Base.encode64(":#{api_key()}")
(headers ++
[
{"Authorization", "Basic #{base_api_key}"},
{"Content-type", "application/json"}
])
|> Enum.uniq_by(fn {key, _} -> key end)
end
defp base_url do
shard = extract_shard()
"https://#{shard}.api.mailchimp.com/3.0/"
end
defp api_key, do: ExChimp.config(:api_key) || ""
defp extract_shard do
case String.split(api_key(), "-") do
[_, shard_key] -> shard_key
_ -> raise "Could not extract shard from API-key. Please check your API key."
end
end
end