33 lines
948 B
Elixir
33 lines
948 B
Elixir
defmodule LolAnalytics.Analyzer.ChampionAnalyzer do
|
|
alias Hex.HTTP
|
|
@behaviour LolAnalytics.Analyzer.BaseAnalyzer
|
|
|
|
@doc """
|
|
iex> LolAnalytics.Analyzer.ChampionAnalyzer.analyze(:url, "https://na1.api.riotgames.com/lol/match/v4/match/234567890123456789")
|
|
:ok
|
|
"""
|
|
@impl true
|
|
@spec analyze(atom(), String.t()) :: :ok
|
|
def analyze(:url, path) do
|
|
data = HTTPoison.get!(path)
|
|
analyze(:data, data.body)
|
|
:ok
|
|
end
|
|
|
|
@doc """
|
|
iex> LolAnalytics.Analyzer.ChampionAnalyzer.analyze(:url, "http://localhost:9000/ranked/14.9.580.2108/EUW1_6923309745.json")
|
|
"""
|
|
@impl true
|
|
@spec analyze(atom(), any()) :: list(LoLAPI.Model.Participant.t())
|
|
def analyze(:data, data) do
|
|
decoded = Poison.decode!(data)
|
|
|
|
%{"info" => %{"participants" => participants}} = decoded
|
|
|
|
participants
|
|
|> Enum.each(fn %{"win" => win, "championId" => champion_id} ->
|
|
IO.inspect(%{win: win, champion_id: champion_id})
|
|
end)
|
|
end
|
|
end
|