Rich Media Parser: Do not return just a title if nothing else is there.

This commit is contained in:
lain 2019-06-22 16:22:59 +02:00
parent 58c4d5312b
commit 0e415921cd
3 changed files with 1493 additions and 1 deletions

View File

@ -34,13 +34,15 @@ defmodule Pleroma.Web.RichMedia.Parsers.MetaTagsParser 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

File diff suppressed because it is too large Load Diff

View File

@ -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 @@ defmodule Pleroma.Web.RichMedia.ParserTest 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,