1 defmodule Pleroma.Web.Metadata do
4 @parsers Pleroma.Config.get([:metadata, :providers], [])
6 def get_cached_tags(params) do
7 # I am unsure how well ETS works with big keys
8 key = :erlang.term_to_binary(params)
10 Cachex.fetch!(:metadata_cache, key, fn _key ->
11 {:commit, build_tags(params)}
15 def build_tags(params) do
16 Enum.reduce(@parsers, "", fn parser, acc ->
19 |> parser.build_tags()
20 |> Enum.map(&to_tag/1)
21 |> Enum.map(&HTML.safe_to_string/1)
29 with {name, attrs, _content = []} <- data do
30 HTML.Tag.tag(name, attrs)
32 {name, attrs, content} ->
33 HTML.Tag.content_tag(name, content, attrs)
36 raise ArgumentError, message: "make_tag invalid args"