defmodule Iris.Request do def request(:rigging, url, token), do: make_request("#{rigging_url()}#{url}", token) defp make_request(url, token) do case HTTPoison.get(url, %{"Authorization" => "Bearer " <> token}) do {:error, _error} -> {:error, %Iris.Error.ServerError{}} {:ok, %HTTPoison.Response{status_code: 200, body: body}} -> {:ok, Jason.decode!(body, keys: :atoms)} {:ok, %HTTPoison.Response{status_code: 404}} -> {:error, %Iris.Error.NotFoundError{}} {:ok, %HTTPoison.Response{status_code: 401}} -> {:error, %Iris.Error.UnauthorizedError{}} {:ok, %HTTPoison.Response{status_code: 400}} -> {:error, %Iris.Error.BadRequestError{}} end end defp rigging_url(), do: Application.get_env(:iris, :rigging_url) end