Browse Source

Merge branch 'mastoapi/plaintext-statuses' into 'develop'

Provide plaintext representations of content/cw in MastoAPI

Closes #787

See merge request pleroma/pleroma!1035
tags/v1.1.4
rinpatch 5 years ago
parent
commit
144648de92
3 changed files with 32 additions and 7 deletions
  1. +2
    -0
      docs/api/differences_in_mastoapi_responses.md
  2. +26
    -5
      lib/pleroma/web/mastodon_api/views/status_view.ex
  3. +4
    -2
      test/web/mastodon_api/status_view_test.exs

+ 2
- 0
docs/api/differences_in_mastoapi_responses.md View File

@@ -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



+ 26
- 5
lib/pleroma/web/mastodon_api/views/status_view.ex View File

@@ -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


+ 4
- 2
test/web/mastodon_api/status_view_test.exs View File

@@ -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"])}
}
}



Loading…
Cancel
Save