diff options
| -rw-r--r-- | docs/api/differences_in_mastoapi_responses.md | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/views/status_view.ex | 31 | ||||
| -rw-r--r-- | test/web/mastodon_api/status_view_test.exs | 6 | 
3 files changed, 32 insertions, 7 deletions
| diff --git a/docs/api/differences_in_mastoapi_responses.md b/docs/api/differences_in_mastoapi_responses.md index 215f43155..923d94db2 100644 --- a/docs/api/differences_in_mastoapi_responses.md +++ b/docs/api/differences_in_mastoapi_responses.md @@ -20,6 +20,8 @@ Has these additional fields under the `pleroma` object:  - `local`: true if the post was made on the local instance.  - `conversation_id`: the ID of the conversation the status is associated with (if any) +- `content`: a map consisting of alternate representations of the `content` property with the key being it's mimetype. Currently the only alternate representation supported is `text/plain` +- `spoiler_text`: a map consisting of alternate representations of the `spoiler_text` property with the key being it's mimetype. Currently the only alternate representation supported is `text/plain`  ## Attachments diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 4c0b53bdd..d4a8e4fff 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -147,20 +147,39 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do      content =        object        |> render_content() + +    content_html = +      content        |> HTML.get_cached_scrubbed_html_for_activity(          User.html_filter_policy(opts[:for]),          activity,          "mastoapi:content"        ) -    summary = -      (object["summary"] || "") +    content_plaintext = +      content +      |> HTML.get_cached_stripped_html_for_activity( +        activity, +        "mastoapi:content" +      ) + +    summary = object["summary"] || "" + +    summary_html = +      summary        |> HTML.get_cached_scrubbed_html_for_activity(          User.html_filter_policy(opts[:for]),          activity,          "mastoapi:summary"        ) +    summary_plaintext = +      summary +      |> HTML.get_cached_stripped_html_for_activity( +        activity, +        "mastoapi:summary" +      ) +      card = render("card.json", Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity))      url = @@ -179,7 +198,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do        in_reply_to_account_id: reply_to_user && to_string(reply_to_user.id),        reblog: nil,        card: card, -      content: content, +      content: content_html,        created_at: created_at,        reblogs_count: announcement_count,        replies_count: object["repliesCount"] || 0, @@ -190,7 +209,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do        muted: CommonAPI.thread_muted?(user, activity) || User.mutes?(opts[:for], user),        pinned: pinned?(activity, user),        sensitive: sensitive, -      spoiler_text: summary, +      spoiler_text: summary_html,        visibility: get_visibility(object),        media_attachments: attachments,        mentions: mentions, @@ -203,7 +222,9 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do        emojis: build_emojis(activity.data["object"]["emoji"]),        pleroma: %{          local: activity.local, -        conversation_id: get_context_id(activity) +        conversation_id: get_context_id(activity), +        content: %{"text/plain" => content_plaintext}, +        spoiler_text: %{"text/plain" => summary_plaintext}        }      }    end diff --git a/test/web/mastodon_api/status_view_test.exs b/test/web/mastodon_api/status_view_test.exs index 8db92ac16..db2fdc2f6 100644 --- a/test/web/mastodon_api/status_view_test.exs +++ b/test/web/mastodon_api/status_view_test.exs @@ -101,7 +101,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do        muted: false,        pinned: false,        sensitive: false, -      spoiler_text: note.data["object"]["summary"], +      spoiler_text: HtmlSanitizeEx.basic_html(note.data["object"]["summary"]),        visibility: "public",        media_attachments: [],        mentions: [], @@ -126,7 +126,9 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do        ],        pleroma: %{          local: true, -        conversation_id: convo_id +        conversation_id: convo_id, +        content: %{"text/plain" => HtmlSanitizeEx.strip_tags(note.data["object"]["content"])}, +        spoiler_text: %{"text/plain" => HtmlSanitizeEx.strip_tags(note.data["object"]["summary"])}        }      } | 
