summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2018-02-17 18:38:58 +0100
committerlain <lain@soykaf.club>2018-02-17 18:38:58 +0100
commitab27c90c9fccd20cacad86a5c5f9a48314884d53 (patch)
tree560d06ac016654be328c05c0a879814451846edf /lib
parentfb7b926be385da563f29f2a7134f965fcba36b3c (diff)
downloadpleroma-ab27c90c9fccd20cacad86a5c5f9a48314884d53.tar.gz
pleroma-ab27c90c9fccd20cacad86a5c5f9a48314884d53.zip
ActivityPub: Handle attachments.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index 76f04e8a3..6cf7cfe35 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -11,6 +11,18 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def fix_object(object) do
object
|> Map.put("actor", object["attributedTo"])
+ |> fix_attachments
+ end
+
+ def fix_attachments(object) do
+ attachments = object["attachment"] || []
+ |> Enum.map(fn (data) ->
+ url = [%{"type" => "Link", "mediaType" => data["mediaType"], "url" => data["url"]}]
+ Map.put(data, "url", url)
+ end)
+
+ object
+ |> Map.put("attachment", attachments)
end
# TODO: validate those with a Ecto scheme
@@ -60,6 +72,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
object = object
|> add_mention_tags
|> add_attributed_to
+ |> prepare_attachments
data = data
|> Map.put("object", object)
@@ -93,4 +106,15 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
object
|> Map.put("attributedTo", attributedTo)
end
+
+ def prepare_attachments(object) do
+ attachments = (object["attachment"] || [])
+ |> Enum.map(fn (data) ->
+ [%{"mediaType" => media_type, "href" => href} | _] = data["url"]
+ %{"url" => href, "mediaType" => media_type, "name" => data["name"], "type" => "Document"}
+ end)
+
+ object
+ |> Map.put("attachment", attachments)
+ end
end