projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branch 'remotes/origin/develop' into 2168-media-preview-proxy
[akkoma]
/
lib
/
pleroma
/
web
/
rich_media
/
parsers
/
oembed_parser.ex
diff --git
a/lib/pleroma/web/rich_media/parsers/oembed_parser.ex
b/lib/pleroma/web/rich_media/parsers/oembed_parser.ex
index 8f32bf91b3123c16ca683b2902ba5d8c6523d3df..1fe6729c39289e5e3d23822512fe6f386afdaa24 100644
(file)
--- a/
lib/pleroma/web/rich_media/parsers/oembed_parser.ex
+++ b/
lib/pleroma/web/rich_media/parsers/oembed_parser.ex
@@
-5,11
+5,11
@@
defmodule Pleroma.Web.RichMedia.Parsers.OEmbed do
def parse(html, _data) do
with elements = [_ | _] <- get_discovery_data(html),
defmodule Pleroma.Web.RichMedia.Parsers.OEmbed do
def parse(html, _data) do
with elements = [_ | _] <- get_discovery_data(html),
-
{:ok, oembed_url}
<- get_oembed_url(elements),
+
oembed_url when is_binary(oembed_url)
<- get_oembed_url(elements),
{:ok, oembed_data} <- get_oembed_data(oembed_url) do
{:ok, oembed_data} <- get_oembed_data(oembed_url) do
- {:ok, oembed_data}
+ oembed_data
else
else
- _e ->
{:error, "No OEmbed data found"
}
+ _e ->
%{
}
end
end
end
end
@@
-17,19
+17,13
@@
defmodule Pleroma.Web.RichMedia.Parsers.OEmbed do
html |> Floki.find("link[type='application/json+oembed']")
end
html |> Floki.find("link[type='application/json+oembed']")
end
- defp get_oembed_url(nodes) do
- {"link", attributes, _children} = nodes |> hd()
-
- {:ok, Enum.into(attributes, %{})["href"]}
+ defp get_oembed_url([{"link", attributes, _children} | _]) do
+ Enum.find_value(attributes, fn {k, v} -> if k == "href", do: v end)
end
defp get_oembed_data(url) do
end
defp get_oembed_data(url) do
- {:ok, %Tesla.Env{body: json}} = Pleroma.HTTP.get(url, [], adapter: [pool: :media])
-
- {:ok, data} = Jason.decode(json)
-
- data = data |> Map.new(fn {k, v} -> {String.to_atom(k), v} end)
-
- {:ok, data}
+ with {:ok, %Tesla.Env{body: json}} <- Pleroma.Web.RichMedia.Helpers.rich_media_get(url) do
+ Jason.decode(json)
+ end
end
end
end
end