diff options
author | William Pitcock <nenolod@dereferenced.org> | 2018-03-24 21:39:37 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2018-03-24 16:42:17 -0500 |
commit | 2aea3bc632ffe73c86f4ac9fff79286c179f425f (patch) | |
tree | 8004da24c1ebbd79aedc50be084efd49c2a0473d /lib | |
parent | 847cb15626debd15eb50c00bb50113457bed7d1c (diff) | |
download | pleroma-2aea3bc632ffe73c86f4ac9fff79286c179f425f.tar.gz |
activitypub transmogrifier: rewrite incoming hashtags
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 61631e1ea..6561b8d76 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -22,6 +22,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do |> fix_context |> fix_in_reply_to |> fix_emoji + |> fix_tag end def fix_in_reply_to(%{"inReplyTo" => in_reply_to_id} = object) when not is_nil(in_reply_to_id) do @@ -76,6 +77,17 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do |> Map.put("emoji", emoji) end + def fix_tag(object) do + tags = (object["tag"] || []) + |> Enum.filter(fn (data) -> data["type"] == "Hashtag" and data["name"] end) + |> Enum.map(fn (data) -> String.slice(data["name"], 1..-1) end) + + combined = (object["tag"] || []) ++ tags + + object + |> Map.put("tag", combined) + end + # TODO: validate those with a Ecto scheme # - tags # - emoji |