Packages

A wrapper for the Sports Radar API.

Current section

Files

Jump to
sports_radar lib nascar.ex
Raw

lib/nascar.ex

defmodule SportsRadar.Nascar do
@moduledoc """
A wrapper around the Sports Radar NASCAR API. http://developer.sportradar.com/io-docs
Note: This is for the "NASCAR Official API"
The 2017 season uses 'mc' versus 'sc' for the Monster Energy rebranding.
The 2016 and prior seasons use 'sc' for the Sprint Cup naming.
"""
@doc """
drivers
## Examples
iex> {:ok, res} = SportsRadar.Nascar.drivers("mc", "2017")
"""
def drivers(series, year) do
key = Application.get_env(:sports_radar, :api_key)
url = "http://api.sportradar.us/nascar-ot3/" <> series <> "/" <> year <> "/drivers/list.json?api_key=" <> key
case SportsRadar.Request.get(url) do
{:ok, response} ->
SportsRadar.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
@doc """
drivers_statistics
## Examples
iex> {:ok, res} = SportsRadar.Nascar.drivers_stats("mc", "2017")
"""
def drivers_statistics(series, year), do: drivers_stats(series, year)
def drivers_stats(series, year) do
key = Application.get_env(:sports_radar, :api_key)
url = "http://api.sportradar.us/nascar-ot3/" <> series <> "/drivers" <> year <> "/drivers.json?api_key=" <> key
case SportsRadar.Request.get(url) do
{:ok, response} ->
SportsRadar.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
@doc """
daily_change_log: Meta response to see what changes in the API data
## Examples
iex> {:ok, res} = SportsRadar.Nascar.daily_change_log("2017", "02", "1")
"""
def daily_change_log(year, month, day) do
key = Application.get_env(:sports_radar, :api_key)
url = "http://api.sportradar.us/nascar-ot3/" <> year <> "/" <> month <> "/" <> day <> "/changes.json?api_key=" <> key
case SportsRadar.Request.get(url) do
{:ok, response} ->
SportsRadar.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
@doc """
tracks
## Examples
iex> {:ok, res} = SportsRadar.Nascar.tracks()
"""
def tracks() do
key = Application.get_env(:sports_radar, :api_key)
url = "http://api.sportradar.us/nascar-ot3/tracks/list.json?api_key=" <> key
case SportsRadar.Request.get(url) do
{:ok, response} ->
SportsRadar.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
@doc """
entry_list
## Examples
iex> {:ok, res} = SportsRadar.Nascar.entry_list("sc", "87f618bf-2ee5-4e6e-b558-7bbc0337e5c7")
"""
def entry_list(series, race_id) do
key = Application.get_env(:sports_radar, :api_key)
url = "http://api.sportradar.us/nascar-ot3/" <> series <> "/races/" <> race_id <> "/entry_list.json?api_key=" <> key
case SportsRadar.Request.get(url) do
{:ok, response} ->
SportsRadar.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
@doc """
practice_leaderboard
## Examples
iex> {:ok, res} = SportsRadar.Nascar.practice_leaderboard("sc", "87f618bf-2ee5-4e6e-b558-7bbc0337e5c7")
"""
def practice_leaderboard(series, race_id) do
key = Application.get_env(:sports_radar, :api_key)
url = "http://api.sportradar.us/nascar-ot3/" <> series <> "/races/" <> race_id <> "/practices.json?api_key=" <> key
case SportsRadar.Request.get(url) do
{:ok, response} ->
SportsRadar.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
@doc """
qualifying_leaderboard
## Examples
iex> {:ok, res} = SportsRadar.Nascar.qualifying_leaderboard("sc", "87f618bf-2ee5-4e6e-b558-7bbc0337e5c7")
"""
def qualifying_leaderboard(series, race_id) do
key = Application.get_env(:sports_radar, :api_key)
url = "http://api.sportradar.us/nascar-ot3/" <> series <> "/races/" <> race_id <> "/qualifying.json?api_key=" <> key
case SportsRadar.Request.get(url) do
{:ok, response} ->
SportsRadar.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
@doc """
starting_grid
## Examples
iex> {:ok, res} = SportsRadar.Nascar.starting_grid("sc", "87f618bf-2ee5-4e6e-b558-7bbc0337e5c7")
"""
def starting_grid(series, race_id) do
key = Application.get_env(:sports_radar, :api_key)
url = "http://api.sportradar.us/nascar-ot3/" <> series <> "/races/" <> race_id <> "/starting_grid.json?api_key=" <> key
case SportsRadar.Request.get(url) do
{:ok, response} ->
SportsRadar.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
@doc """
race_leaderboard
Individual race leaderboard. Has finishing order and points.
## Examples
iex(2)> {:ok, res} = SportsRadar.Nascar.results("sc", "87f618bf-2ee5-4e6e-b558-7bbc0337e5c7")
iex(2)> {:ok, res} = SportsRadar.Nascar.race_leaderboard("sc", "87f618bf-2ee5-4e6e-b558-7bbc0337e5c7")
"""
def race_leaderboard(series, race_id), do: results(series, race_id)
def results(series, race_id) do
key = Application.get_env(:sports_radar, :api_key)
url = "http://api.sportradar.us/nascar-ot3/" <> series <> "/races/" <> race_id <> "/results.json?api_key=" <> key
case SportsRadar.Request.get(url) do
{:ok, response} ->
SportsRadar.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
@doc """
Standings for drivers, rookies, owners, and manufacturers.
## Examples
iex(1)> {:ok, res} = SportsRadar.Nascar.standings("mc", "2017", "drivers")
iex(1)> {:ok, res} = SportsRadar.Nascar.drivers_standings("mc", "2017")
iex(1)> {:ok, res} = SportsRadar.Nascar.rookies_standings("mc", "2017")
iex(1)> {:ok, res} = SportsRadar.Nascar.owners_standings("mc", "2017")
iex(1)> {:ok, res} = SportsRadar.Nascar.manufacturers_standings("mc", "2017")
"""
def driver_standings(series, year), do: standings(series, year, "drivers")
def rookies_standings(series, year), do: standings(series, year, "rookies")
def owners_standings(series, year), do: standings(series, year, "owners")
def manufacturers_standings(series, year), do: standings(series, year, "manufacturers")
def standings(series, year, type) do
key = Application.get_env(:sports_radar, :api_key)
url = "http://api.sportradar.us/nascar-ot3/" <> series <> "/" <> year <> "/standings/" <> type <> ".json?api_key=" <> key
case SportsRadar.Request.get(url) do
{:ok, response} ->
SportsRadar.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
@doc """
Yearly series schedules.
## Examples
iex(2)> {:ok, res} = SportsRadar.Nascar.schedule("mc", "2017")
"""
def schedule(series, year) do
key = Application.get_env(:sports_radar, :api_key)
url = "http://api.sportradar.us/nascar-t3/" <> series <> "/" <> year <> "/races/schedule.json?api_key=" <> key
case SportsRadar.Request.get(url) do
{:ok, response} ->
SportsRadar.Request.handle_response(response)
{:error, reason} -> {:error, reason}
end
end
end