summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2018-12-23 13:28:17 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2018-12-23 13:31:08 +0000
commit71f6d9f418087a16ff266ef380b3290088e0d301 (patch)
treee6f176d73f1caf959b0049531a10340370a108b6 /lib
parent3aff8067e4b65962fe65812807cbb52bd971ddd8 (diff)
downloadpleroma-71f6d9f418087a16ff266ef380b3290088e0d301.tar.gz
pleroma-71f6d9f418087a16ff266ef380b3290088e0d301.zip
transmogrifier: significantly rework handling of peertube videos, add test
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex37
1 files changed, 26 insertions, 11 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index d5cc82918..4bc96b00d 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -170,8 +170,14 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
attachments =
attachment
|> Enum.map(fn data ->
- url = [%{"type" => "Link", "mediaType" => data["mediaType"], "href" => data["url"]}]
- Map.put(data, "url", url)
+ media_type = data["mediaType"] || data["mimeType"]
+ href = data["url"] || data["href"]
+
+ url = [%{"type" => "Link", "mediaType" => media_type, "href" => href}]
+
+ data
+ |> Map.put("mediaType", media_type)
+ |> Map.put("url", url)
end)
object
@@ -190,7 +196,22 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|> Map.put("url", url["href"])
end
- def fix_url(%{"url" => url} = object) when is_list(url) do
+ def fix_url(%{"type" => "Video", "url" => url} = object) when is_list(url) do
+ first_element = Enum.at(url, 0)
+
+ link_element =
+ url
+ |> Enum.filter(fn x -> is_map(x) end)
+ |> Enum.filter(fn x -> x["mimeType"] == "text/html" end)
+ |> Enum.at(0)
+
+ object
+ |> Map.put("attachment", [first_element])
+ |> Map.put("url", link_element["href"])
+ end
+
+ def fix_url(%{"type" => object_type, "url" => url} = object)
+ when object_type != "Video" and is_list(url) do
first_element = Enum.at(url, 0)
url_string =
@@ -200,14 +221,8 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
true -> ""
end
- if Map.get(object, "type") == "Video" do
- object
- |> Map.delete("url")
- |> Map.put("attachment", url_string)
- else
- object
- |> Map.put("url", url_string)
- end
+ object
+ |> Map.put("url", url_string)
end
def fix_url(object), do: object