Current section
Files
Jump to
Current section
Files
lib/furlex/parser/twitter.ex
defmodule Unfurl.Parser.Twitter do
@behaviour Unfurl.Parser
alias Unfurl.Parser
@tags ~w(
twitter:card twitter:site twitter:domain twitter:url twitter:site:id
twitter:creator twitter:creator:id twitter:description twitter:title
twitter:image twitter:image:alt twitter:player twitter:player:width
twitter:player:height twitter:player:stream twitter:app:name:iphone
twitter:app:id:iphone twitter:app:url:iphone twitter:app:name:ipad
twitter:app:id:ipad twitter:app:url:ipad twitter:app:name:googleplay
twitter:app:url:googleplay twitter:app:id:googleplay
)
@spec parse(String.t()) :: {:ok, Map.t()}
def parse(html, _opts \\ []) do
meta = &"meta[name=\"#{&1}\"]"
map = Parser.extract(tags(), html, meta)
{:ok, Map.merge(map, Map.get(map, "twitter", %{})) |> Map.drop(["twitter"])}
end
@doc false
def tags do
(config(:tags) || [])
|> Enum.concat(@tags)
|> Enum.uniq()
end
defp config(key), do: Application.get_env(:unfurl, __MODULE__)[key]
end