RichMedia: do not log webpages missing metadata as errors
authorrinpatch <rinpatch@sdf.org>
Sat, 5 Sep 2020 19:00:51 +0000 (22:00 +0300)
committerrinpatch <rinpatch@sdf.org>
Sat, 5 Sep 2020 19:05:35 +0000 (22:05 +0300)
Also fixes the return value of Parser.parse on errors, previously
was just `:ok` due to the logger call in the end

lib/pleroma/web/rich_media/parser.ex
test/web/rich_media/parser_test.exs

index e98c743caa7d4be1214b4a1157fc365d2305f571..5727fda189bf39f4ac501461504ff247f1f86fa7 100644 (file)
@@ -21,8 +21,13 @@ defmodule Pleroma.Web.RichMedia.Parser do
            {:ok, _} <- set_ttl_based_on_image(data, url) do
         {:ok, data}
       else
+        {:error, {:invalid_metadata, data}} = e ->
+          Logger.debug(fn -> "Incomplete or invalid metadata for #{url}: #{inspect(data)}" end)
+          e
+
         error ->
-          Logger.error(fn -> "Rich media error: #{inspect(error)}" end)
+          Logger.error(fn -> "Rich media error for #{url}: #{inspect(error)}" end)
+          error
       end
     end
 
@@ -90,7 +95,7 @@ defmodule Pleroma.Web.RichMedia.Parser do
     end)
   end
 
-  defp parse_url(url) do
+  def parse_url(url) do
     with {:ok, %Tesla.Env{body: html}} <- Pleroma.Web.RichMedia.Helpers.rich_media_get(url),
          {:ok, html} <- Floki.parse_document(html) do
       html
@@ -116,7 +121,7 @@ defmodule Pleroma.Web.RichMedia.Parser do
   end
 
   defp check_parsed_data(data) do
-    {:error, "Found metadata was invalid or incomplete: #{inspect(data)}"}
+    {:error, {:invalid_metadata, data}}
   end
 
   defp clean_parsed_data(data) do
index 1e09cbf842415776035baca2270c85e9df90a369..21ae35f8b4f99d2015846b66a1bad73533907c57 100644 (file)
@@ -66,9 +66,7 @@ defmodule Pleroma.Web.RichMedia.ParserTest do
   end
 
   test "doesn't just add a title" do
-    assert Parser.parse("http://example.com/non-ogp") ==
-             {:error,
-              "Found metadata was invalid or incomplete: %{\"url\" => \"http://example.com/non-ogp\"}"}
+    assert {:error, {:invalid_metadata, _}} = Parser.parse("http://example.com/non-ogp")
   end
 
   test "parses ogp" do