Current section

Files

Jump to
indieweb lib indieweb app microformats.ex
Raw

lib/indieweb/app/microformats.ex

defmodule IndieWeb.App.Microformats do
@behaviour IndieWeb.App.Parser
@moduledoc false
alias IndieWeb.MF2
@impl true
def resolve(uri) do
with(
{:ok, page_mf2} <- MF2.Remote.fetch(uri),
{:ok, app_mf2} <- MF2.get_item_for_url(page_mf2, uri)
) do
formatted_properties = app_mf2
|> Map.get("properties", %{})
|> Map.take(~w(name logo url))
|> Enum.map(fn {key, value} -> {key, List.last(value)} end)
|> Map.new
{:ok, formatted_properties}
else
_ -> {:error, :failed_to_fetch_h_x_app_data}
end
end
@impl true
def clear(_), do: :ok
end