summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMaksim Pechnikov <parallel588@gmail.com>2020-04-28 09:32:43 +0300
committerMaksim Pechnikov <parallel588@gmail.com>2020-04-28 09:32:43 +0300
commitea5142b94bcd1a02571776440dc828dd08a2c3d6 (patch)
treeb096e8dc1390634d4ec4837a43ba77240b882c85 /lib
parentc5c09fc61b7b6e591e9de23028e5caea8f26b996 (diff)
downloadpleroma-ea5142b94bcd1a02571776440dc828dd08a2c3d6.tar.gz
pleroma-ea5142b94bcd1a02571776440dc828dd08a2c3d6.zip
convert markdown content to html
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index 17e3c203a..91933dc0f 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
A module to handle coding from internal to wire ActivityPub and back.
"""
alias Pleroma.Activity
+ alias Pleroma.EarmarkRenderer
alias Pleroma.FollowingRelationship
alias Pleroma.Object
alias Pleroma.Object.Containment
@@ -35,7 +36,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|> fix_actor
|> fix_url
|> fix_attachments
- |> fix_media_type
|> fix_context
|> fix_in_reply_to(options)
|> fix_emoji
@@ -44,6 +44,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|> fix_addressing
|> fix_summary
|> fix_type(options)
+ |> fix_content
end
def fix_summary(%{"summary" => nil} = object) do
@@ -358,11 +359,17 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def fix_type(object, _), do: object
- defp fix_media_type(%{"mediaType" => _} = object) do
- Map.put(object, "mediaType", "text/html")
+ defp fix_content(%{"mediaType" => "text/markdown", "content" => content} = object)
+ when is_binary(content) do
+ html_content =
+ content
+ |> Earmark.as_html!(%Earmark.Options{renderer: EarmarkRenderer})
+ |> Pleroma.HTML.filter_tags()
+
+ Map.merge(object, %{"content" => html_content, "mediaType" => "text/html"})
end
- defp fix_media_type(object), do: object
+ defp fix_content(object), do: object
defp mastodon_follow_hack(%{"id" => id, "actor" => follower_id}, followed) do
with true <- id =~ "follows",