defmodule GithubIssues.Engine do require Logger @user_agent [{"User-agent", "GithubIssues.Engine"}] def fetch(user, project) do Logger.info("Fetching user #{user}'s project #{project}") issues_url(user, project) |> HTTPoison.get(@user_agent) |> elem(1) |> handle_response end def handle_response(%{status_code: 200, body: body}) do Logger.info("Successful response") {:ok, :jsx.decode(body)} end def handle_response(%{status_code: status, body: body}) do Logger.info("Error #{status} returned") {:error, :jsx.decode(body)} end @github_url Application.get_env(:github_issues, :github_url) def issues_url(user, project) do "#{@github_url}/repos/#{user}/#{project}/issues" end end