diff --git a/lib/music_brainz/release_group.ex b/lib/music_brainz/release_group.ex index 6d39e06f..9d86ab4a 100644 --- a/lib/music_brainz/release_group.ex +++ b/lib/music_brainz/release_group.ex @@ -25,6 +25,13 @@ defmodule MusicBrainz.ReleaseGroup do "https://musicbrainz.org/release-group/#{id}" end + def parse_subtype("Album"), do: :album + def parse_subtype("EP"), do: :ep + def parse_subtype("Live"), do: :live + def parse_subtype("Compilation"), do: :compilation + def parse_subtype("Single"), do: :single + def parse_subtype(_), do: :other + defp get_release_groups(release_group) do release_group |> Map.get("relations", []) diff --git a/lib/music_brainz/release_group_search_result.ex b/lib/music_brainz/release_group_search_result.ex index 3a7bd45d..c2096049 100644 --- a/lib/music_brainz/release_group_search_result.ex +++ b/lib/music_brainz/release_group_search_result.ex @@ -2,10 +2,12 @@ defmodule MusicBrainz.ReleaseGroupSearchResult do @enforce_keys [:id, :type, :title, :artists, :release] defstruct [:id, :type, :title, :artists, :release] + alias MusicBrainz.ReleaseGroup + def from_api_response(rg) do %__MODULE__{ id: rg["id"], - type: parse_subtype(rg["primary-type"]), + type: ReleaseGroup.parse_subtype(rg["primary-type"]), title: rg["title"], artists: rg["artist-credit"] @@ -14,11 +16,4 @@ defmodule MusicBrainz.ReleaseGroupSearchResult do release: rg["first-release-date"] } end - - defp parse_subtype("Album"), do: :album - defp parse_subtype("EP"), do: :ep - defp parse_subtype("Live"), do: :live - defp parse_subtype("Compilation"), do: :compilation - defp parse_subtype("Single"), do: :single - defp parse_subtype(_), do: :other end