From 0c0c7f123029212593c361708fa28d51a636de4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro?= Date: Sat, 15 Jun 2024 19:06:12 +0200 Subject: [PATCH] Update facts processors error handling --- .../champion_picked_item/fact_processor.ex | 18 +++++++----------- .../fact_processor.ex | 18 +++++++----------- .../champion_played_game/fact_processor.ex | 18 +++++++----------- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_item/fact_processor.ex b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_item/fact_processor.ex index 36b2d08..08c4a76 100644 --- a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_item/fact_processor.ex +++ b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_item/fact_processor.ex @@ -9,20 +9,16 @@ defmodule LolAnalytics.Facts.ChampionPickedItem.FactProcessor do """ @impl true def process_game_at_url(url) do - case HTTPoison.get(url) do - {:ok, %HTTPoison.Response{status_code: 200, body: body}} -> - process_game_data(body) - - {:error, %HTTPoison.Error{reason: reason}} -> - {:error, reason} - - _ -> - {:error, "Could not fetch data from #{url}"} + with {:ok, %HTTPoison.Response{status_code: 200, body: body}} <- + HTTPoison.get(url), + {:ok, decoded_match} <- Poison.decode(body, as: %LoLAPI.Model.MatchResponse{}) do + process_game_data(decoded_match) + else + _ -> {:error, "Could not process data from #{url}"} end end - defp process_game_data(data) do - decoded_match = Poison.decode!(data, as: %LoLAPI.Model.MatchResponse{}) + defp process_game_data(decoded_match) do participants = decoded_match.info.participants version = extract_game_version(decoded_match) diff --git a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/fact_processor.ex b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/fact_processor.ex index 25b3417..ea13979 100644 --- a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/fact_processor.ex +++ b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/fact_processor.ex @@ -8,20 +8,16 @@ defmodule LolAnalytics.Facts.ChampionPickedSummonerSpell.FactProcessor do @impl true @spec process_game_at_url(String.t()) :: any() def process_game_at_url(url) do - case HTTPoison.get(url) do - {:ok, %HTTPoison.Response{status_code: 200, body: body}} -> - process_game_data(body) - - {:error, %HTTPoison.Error{reason: reason}} -> - {:error, reason} - - _ -> - {:error, "Could not fetch data from #{url}"} + with {:ok, %HTTPoison.Response{status_code: 200, body: body}} <- + HTTPoison.get(url), + {:ok, decoded_match} <- Poison.decode(body, as: %LoLAPI.Model.MatchResponse{}) do + process_game_data(decoded_match) + else + _ -> {:error, "Could not process data from #{url}"} end end - defp process_game_data(data) do - decoded_match = Poison.decode!(data, as: %LoLAPI.Model.MatchResponse{}) + defp process_game_data(decoded_match) do participants = decoded_match.info.participants version = extract_game_version(decoded_match) diff --git a/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/fact_processor.ex b/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/fact_processor.ex index 3326796..12efafb 100644 --- a/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/fact_processor.ex +++ b/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/fact_processor.ex @@ -6,20 +6,16 @@ defmodule LolAnalytics.Facts.ChampionPlayedGame.FactProcessor do @impl true @spec process_game_at_url(String.t()) :: none() def process_game_at_url(url) do - case HTTPoison.get(url) do - {:ok, %HTTPoison.Response{status_code: 200, body: body}} -> - process_game_data(body) - - {:error, %HTTPoison.Error{reason: reason}} -> - {:error, reason} - - _ -> - {:error, "Could not fetch data from #{url}"} + with {:ok, %HTTPoison.Response{status_code: 200, body: body}} <- + HTTPoison.get(url), + {:ok, decoded_match} <- Poison.decode(body, as: %LoLAPI.Model.MatchResponse{}) do + process_game_data(decoded_match) + else + _ -> {:error, "Could not process data from #{url}"} end end - def process_game_data(data) do - decoded_match = Poison.decode!(data, as: %LoLAPI.Model.MatchResponse{}) + def process_game_data(decoded_match) do participants = decoded_match.info.participants version = extract_game_version(decoded_match)