Current section
Files
Jump to
Current section
Files
lib/http/client_base.ex
defmodule PINXS.HTTP.ClientBase do
@moduledoc false
use HTTPoison.Base
@pin_url Application.get_env(:pinxs, :pin_url, "")
@pin_api_key Application.get_env(:pinxs, :api_key, "")
@encoded Base.encode64("#{@pin_api_key}:")
def process_url(endpoint) do
@pin_url <> endpoint
end
def process_request_headers(_headers) do
[{"Authorization", "Basic #{@encoded}"}, {"Content-Type", "application/json"}]
end
def process_response_body(""), do: ""
def process_response_body(body), do: Poison.decode!(body, keys: :atoms)
def process_request_body(body), do: Poison.encode!(body)
def get(url, headers \\ [], options \\ []),
do: request(:get, url, "", headers, options) |> normalize()
def post(url, body, headers \\ [], options \\ []),
do: request(:post, url, body, headers, options) |> normalize()
def put(url, body \\ "", headers \\ [], options \\ []),
do: request(:put, url, body, headers, options) |> normalize()
def normalize({:ok, %{status_code: status_code} = response}) when status_code in 200..299,
do: {:ok, response}
def normalize({:ok, response}), do: {:error, response}
def normalize(any), do: any
end