logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 720412bf2471f3528c82ead581e26341360d27db
parent: 4d69d066c4cf4c7896ee39a1e9ec5667333ca48c
Author: kaniini <nenolod@gmail.com>
Date:   Fri, 21 Jun 2019 22:28:46 +0000

Merge branch 'revert-6f5a0cc1' into 'develop'

Revert "Merge branch 'fix/ogp-title' into 'develop'"

See merge request pleroma/pleroma!1317

Diffstat:

Mlib/pleroma/web/rich_media/parsers/meta_tags_parser.ex33++++++++-------------------------
Dtest/fixtures/rich_media/ogp-missing-title.html12------------
Mtest/web/rich_media/parser_test.exs22----------------------
3 files changed, 8 insertions(+), 59 deletions(-)

diff --git a/lib/pleroma/web/rich_media/parsers/meta_tags_parser.ex b/lib/pleroma/web/rich_media/parsers/meta_tags_parser.ex @@ -1,19 +1,15 @@ defmodule Pleroma.Web.RichMedia.Parsers.MetaTagsParser do def parse(html, data, prefix, error_message, key_name, value_name \\ "content") do - meta_data = - html - |> get_elements(key_name, prefix) - |> Enum.reduce(data, fn el, acc -> - attributes = normalize_attributes(el, prefix, key_name, value_name) + with elements = [_ | _] <- get_elements(html, key_name, prefix), + meta_data = + Enum.reduce(elements, data, fn el, acc -> + attributes = normalize_attributes(el, prefix, key_name, value_name) - Map.merge(acc, attributes) - end) - |> maybe_put_title(html) - - if Enum.empty?(meta_data) do - {:error, error_message} - else + Map.merge(acc, attributes) + end) do {:ok, meta_data} + else + _e -> {:error, error_message} end end @@ -31,17 +27,4 @@ defmodule Pleroma.Web.RichMedia.Parsers.MetaTagsParser do %{String.to_atom(data[key_name]) => data[value_name]} end - - defp maybe_put_title(%{title: _} = meta, _), do: meta - - defp maybe_put_title(meta, html) do - case get_page_title(html) do - "" -> meta - title -> Map.put_new(meta, :title, title) - end - end - - defp get_page_title(html) do - Floki.find(html, "title") |> Floki.text() - end end diff --git a/test/fixtures/rich_media/ogp-missing-title.html b/test/fixtures/rich_media/ogp-missing-title.html @@ -1,12 +0,0 @@ -<html prefix="og: http://ogp.me/ns#"> - -<head> - <title>The Rock (1996)</title> - <meta property="og:type" content="video.movie" /> - <meta property="og:url" content="http://www.imdb.com/title/tt0117500/" /> - <meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" /> - <meta property="og:description" - content="Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer."> -</head> - -</html> diff --git a/test/web/rich_media/parser_test.exs b/test/web/rich_media/parser_test.exs @@ -11,15 +11,6 @@ defmodule Pleroma.Web.RichMedia.ParserTest do %{ method: :get, - url: "http://example.com/ogp-missing-title" - } -> - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/rich_media/ogp-missing-title.html") - } - - %{ - method: :get, url: "http://example.com/twitter-card" } -> %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/twitter_card.html")} @@ -60,19 +51,6 @@ defmodule Pleroma.Web.RichMedia.ParserTest do }} end - test "falls back to <title> when ogp:title is missing" do - assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/ogp-missing-title") == - {:ok, - %{ - image: "http://ia.media-imdb.com/images/rock.jpg", - title: "The Rock (1996)", - description: - "Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer.", - type: "video.movie", - url: "http://www.imdb.com/title/tt0117500/" - }} - end - test "parses twitter card" do assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/twitter-card") == {:ok,