README.md

# MySportsFeeds

A HTTP wrapper for the [My Sports Feeds API](https://www.mysportsfeeds.com/data-feeds/api-docs)

Provides a caching layer out of the box as well.

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `my_sports_feeds` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [{:my_sports_feeds, "~> 0.1.0"}]
end
```

## Config

In you `config.exs` file put something like.  Match the environment variable you use when running your application.
```elixir 
config :my_sports_feeds, token: System.get_env("MY_SPORTS_FEEDS_TOKEN")
```


## Running

You will need an account with My Sports Feeds, then place your login:password in the `MY_SPORTS_FEEDS_TOKEN` environments variable.

```elixir
▶ MY_SPORTS_FEEDS_TOKEN="<your_token>" iex -S mix
```

Make an API call

```elixir

iex(1)> MySportsFeeds.NFL.daily_player_stats("2016-09-11")

21:04:28.071 [info]  Go for URL: https://www.mysportsfeeds.com/api/feed/pull/nfl/2016-2017-regular/daily_player_stats.json?force=true&fordate=20160911&season=2016-2017-regular

21:05:12.620 [info]  Got results...parsing
{:ok,
 %{"dailyplayerstats" => %{"lastUpdatedOn" => "2017-04-30 10:05:05 PM",
     "playerstatsentry" => [%{"player" => %{"FirstName" => "Jared",
          "ID" => "6923", "JerseyNumber" => "84", "LastName" => "Abbrederis",
  ....
```

Filtered results

```elixir
iex(3)> MySportsFeeds.NBA.daily_player_stats("2017-05-01", "latest",  %{player: "Lebron-James"})

22:56:18.708 [info]  Go for URL: https://www.mysportsfeeds.com/api/feed/pull/nba/latest/daily_player_stats.json?force=true&fordate=20170501&player=Lebron-James

22:56:19.024 [info]  Got results...parsing
{:ok,
 %{"dailyplayerstats" => %{"lastUpdatedOn" => "2017-05-02 3:44:02 PM",
     "playerstatsentry" => [%{"player" => %{"FirstName" => "LeBron",
          "ID" => "9158", "JerseyNumber" => "23", "LastName" => "James",
          "Position" => "SF"},
        "stats" => %{"FoulFlag1PerGame" => %{"#text" => "0.0",
            "@abbreviation" => "FF1/G", "@category" => "Miscellaneous"},
          "FgAttPerGame" => %{"#text" => "23.0", "@abbreviation" => "FGA/G",
            "@category" => "Field Goals"},
          "Fg3PtMadePerGame" => %{"#text" => "2.0", "@abbreviation" => "3PM/G",
            "@category" => "Field Goals"},
```

View cached keys with Cachex API

```elixir
iex(3)> Cachex.keys(:app_cache)
{:ok,
 ["https://www.mysportsfeeds.com/api/feed/pull/nfl/2016-2017-regular/daily_player_stats.json?&fordate=20160911&season=2016-2017-regular"]}
```

If you run the same command again, it should return right away.

```elixir
iex(4)> MySportsFeeds.NFL.daily_player_stats("2016-09-11")
{:ok,
 %{"dailyplayerstats" => %{"lastUpdatedOn" => "2017-04-30 10:05:05 PM",
     "playerstatsentry" => [%{"player" => %{"FirstName" => "Jared",

```

Force a API update with %{force: true}

```elixir
iex(5)> MySportsFeeds.NFL.daily_player_stats("2016-09-11", %{force: true})
```