Rich Media Parser: Do not return just a title if nothing else is there.
This commit is contained in:
parent
58c4d5312b
commit
0e415921cd
3 changed files with 1493 additions and 1 deletions
|
@ -34,13 +34,15 @@ defp normalize_attributes(html_node, prefix, key_name, value_name) do
|
||||||
|
|
||||||
defp maybe_put_title(%{title: _} = meta, _), do: meta
|
defp maybe_put_title(%{title: _} = meta, _), do: meta
|
||||||
|
|
||||||
defp maybe_put_title(meta, html) do
|
defp maybe_put_title(meta, html) when meta != %{} do
|
||||||
case get_page_title(html) do
|
case get_page_title(html) do
|
||||||
"" -> meta
|
"" -> meta
|
||||||
title -> Map.put_new(meta, :title, title)
|
title -> Map.put_new(meta, :title, title)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp maybe_put_title(meta, _), do: meta
|
||||||
|
|
||||||
defp get_page_title(html) do
|
defp get_page_title(html) do
|
||||||
Floki.find(html, "title") |> Floki.text()
|
Floki.find(html, "title") |> Floki.text()
|
||||||
end
|
end
|
||||||
|
|
1479
test/fixtures/rich_media/non_ogp_embed.html
vendored
Normal file
1479
test/fixtures/rich_media/non_ogp_embed.html
vendored
Normal file
File diff suppressed because it is too large
Load diff
|
@ -9,6 +9,12 @@ defmodule Pleroma.Web.RichMedia.ParserTest do
|
||||||
} ->
|
} ->
|
||||||
%Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/ogp.html")}
|
%Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/ogp.html")}
|
||||||
|
|
||||||
|
%{
|
||||||
|
method: :get,
|
||||||
|
url: "http://example.com/non-ogp"
|
||||||
|
} ->
|
||||||
|
%Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/non_ogp_embed.html")}
|
||||||
|
|
||||||
%{
|
%{
|
||||||
method: :get,
|
method: :get,
|
||||||
url: "http://example.com/ogp-missing-title"
|
url: "http://example.com/ogp-missing-title"
|
||||||
|
@ -47,6 +53,11 @@ test "returns error when no metadata present" do
|
||||||
assert {:error, _} = Pleroma.Web.RichMedia.Parser.parse("http://example.com/empty")
|
assert {:error, _} = Pleroma.Web.RichMedia.Parser.parse("http://example.com/empty")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "doesn't just add a title" do
|
||||||
|
assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/non-ogp") ==
|
||||||
|
{:error, "Found metadata was invalid or incomplete: %{}"}
|
||||||
|
end
|
||||||
|
|
||||||
test "parses ogp" do
|
test "parses ogp" do
|
||||||
assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/ogp") ==
|
assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/ogp") ==
|
||||||
{:ok,
|
{:ok,
|
||||||
|
|
Loading…
Reference in a new issue