Files
music_library/lib/wikipedia.ex
T
Claudio Ortolina 7cf9b4e7f8 First pass at uniformed types, specs and docs
- spec public functions (skipping controllers, views, live views and
components)
- use types instead of explanations in docs
- remove redundant docs
- fix typos
2026-03-06 08:33:11 +00:00

20 lines
678 B
Elixir

defmodule Wikipedia do
alias Wikipedia.API
@spec get_artist_summary(String.t()) :: {:ok, map()} | {:error, :no_english_wikipedia | term()}
def get_artist_summary(wikidata_id) do
config = wikipedia_config()
with {:ok, title} when not is_nil(title) <- API.get_wikipedia_title(wikidata_id, config),
{:ok, summary} <- API.get_article_summary(title, config),
{:ok, intro_html} <- API.get_article_extract(title, config) do
{:ok, Map.put(summary, "intro_html", intro_html)}
else
{:ok, nil} -> {:error, :no_english_wikipedia}
error -> error
end
end
defp wikipedia_config, do: Wikipedia.Config.resolve(:music_library)
end