Packages

Typeracer.com statistics api wrapper

Current section

Files

Jump to
typeracer lib typeracer.ex
Raw

lib/typeracer.ex

defmodule Typeracer do
@endpoint "https://typeracerdata.appspot.com/users"
def get_user(id, http_lib \\ HTTPoison) do
id |> user_query_url |> http_lib.get |> handle_request
end
defp user_query_url(id), do: (@endpoint <> "?id=tr:" <> id)
defp handle_request({:ok, %{status_code: 404}}) do
{:error, :id_not_found}
end
defp handle_request({:ok, %{status_code: 200, body: body}}) do
body |> Poison.decode |> parse_body
end
defp handle_request(error), do: error
defp parse_body({:ok, map}), do: Typeracer.User.from_api_map(map)
defp parse_body(error), do: {:error, {:invalid_json, error}}
end