From 72818bfaf28ace71e1bacd5e59337ab14f1e7dcb Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Thu, 23 Apr 2026 15:00:49 +0100 Subject: [PATCH] Validate release-group shape before parsing --- .../live/scrobble_live/release_group_show.ex | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/music_library_web/live/scrobble_live/release_group_show.ex b/lib/music_library_web/live/scrobble_live/release_group_show.ex index 891fc825..f7e11064 100644 --- a/lib/music_library_web/live/scrobble_live/release_group_show.ex +++ b/lib/music_library_web/live/scrobble_live/release_group_show.ex @@ -152,10 +152,18 @@ defmodule MusicLibraryWeb.ScrobbleLive.ReleaseGroupShow do defp load(rg_id) do with {:ok, raw_rg} <- MusicBrainz.get_release_group(rg_id), - release_group = ReleaseGroupSearchResult.from_api_response(raw_rg), + {:ok, release_group} <- parse_release_group(raw_rg), {:ok, %{"releases" => raw_releases}} <- MusicBrainz.get_releases(rg_id, limit: 50) do releases = Enum.map(raw_releases, &Release.from_api_response/1) {:ok, %{release_group: release_group, releases: releases}} end end + + defp parse_release_group(%{"id" => _, "artist-credit" => _} = raw) do + {:ok, ReleaseGroupSearchResult.from_api_response(raw)} + end + + defp parse_release_group(_) do + {:error, :invalid_release_group_response} + end end