forked from AkkomaGang/akkoma
twitterapi: more object normalization work
This commit is contained in:
parent
4482ce7e2d
commit
95a458f392
2 changed files with 21 additions and 19 deletions
|
@ -3,7 +3,7 @@
|
||||||
defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do
|
defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenter do
|
||||||
use Pleroma.Web.TwitterAPI.Representers.BaseRepresenter
|
use Pleroma.Web.TwitterAPI.Representers.BaseRepresenter
|
||||||
alias Pleroma.Web.TwitterAPI.Representers.ObjectRepresenter
|
alias Pleroma.Web.TwitterAPI.Representers.ObjectRepresenter
|
||||||
alias Pleroma.{Activity, User}
|
alias Pleroma.{Activity, User, Object}
|
||||||
alias Pleroma.Web.TwitterAPI.{TwitterAPI, UserView, ActivityView}
|
alias Pleroma.Web.TwitterAPI.{TwitterAPI, UserView, ActivityView}
|
||||||
alias Pleroma.Web.CommonAPI.Utils
|
alias Pleroma.Web.CommonAPI.Utils
|
||||||
alias Pleroma.Formatter
|
alias Pleroma.Formatter
|
||||||
|
@ -144,11 +144,13 @@ def to_map(
|
||||||
%Activity{data: %{"object" => %{"content" => content} = object}} = activity,
|
%Activity{data: %{"object" => %{"content" => content} = object}} = activity,
|
||||||
%{user: user} = opts
|
%{user: user} = opts
|
||||||
) do
|
) do
|
||||||
created_at = object["published"] |> Utils.date_to_asctime()
|
object = Object.normalize(object)
|
||||||
like_count = object["like_count"] || 0
|
|
||||||
announcement_count = object["announcement_count"] || 0
|
created_at = object.data["published"] |> Utils.date_to_asctime()
|
||||||
favorited = opts[:for] && opts[:for].ap_id in (object["likes"] || [])
|
like_count = object.data["like_count"] || 0
|
||||||
repeated = opts[:for] && opts[:for].ap_id in (object["announcements"] || [])
|
announcement_count = object.data["announcement_count"] || 0
|
||||||
|
favorited = opts[:for] && opts[:for].ap_id in (object.data["likes"] || [])
|
||||||
|
repeated = opts[:for] && opts[:for].ap_id in (object.data["announcements"] || [])
|
||||||
|
|
||||||
mentions = opts[:mentioned] || []
|
mentions = opts[:mentioned] || []
|
||||||
|
|
||||||
|
@ -160,8 +162,8 @@ def to_map(
|
||||||
|
|
||||||
conversation_id = conversation_id(activity)
|
conversation_id = conversation_id(activity)
|
||||||
|
|
||||||
tags = activity.data["object"]["tag"] || []
|
tags = object.data["tag"] || []
|
||||||
possibly_sensitive = activity.data["object"]["sensitive"] || Enum.member?(tags, "nsfw")
|
possibly_sensitive = object.data["sensitive"] || Enum.member?(tags, "nsfw")
|
||||||
|
|
||||||
tags = if possibly_sensitive, do: Enum.uniq(["nsfw" | tags]), else: tags
|
tags = if possibly_sensitive, do: Enum.uniq(["nsfw" | tags]), else: tags
|
||||||
|
|
||||||
|
@ -169,16 +171,16 @@ def to_map(
|
||||||
|
|
||||||
html =
|
html =
|
||||||
HTML.filter_tags(content, User.html_filter_policy(opts[:for]))
|
HTML.filter_tags(content, User.html_filter_policy(opts[:for]))
|
||||||
|> Formatter.emojify(object["emoji"])
|
|> Formatter.emojify(object.data["emoji"])
|
||||||
|
|
||||||
video =
|
video =
|
||||||
if object["type"] == "Video" do
|
if object["type"] == "Video" do
|
||||||
vid = [object]
|
vid = [object.data]
|
||||||
else
|
else
|
||||||
[]
|
[]
|
||||||
end
|
end
|
||||||
|
|
||||||
attachments = (object["attachment"] || []) ++ video
|
attachments = (object.data["attachment"] || []) ++ video
|
||||||
|
|
||||||
reply_parent = Activity.get_in_reply_to_activity(activity)
|
reply_parent = Activity.get_in_reply_to_activity(activity)
|
||||||
|
|
||||||
|
@ -186,14 +188,14 @@ def to_map(
|
||||||
|
|
||||||
%{
|
%{
|
||||||
"id" => activity.id,
|
"id" => activity.id,
|
||||||
"uri" => activity.data["object"]["id"],
|
"uri" => object.data["id"],
|
||||||
"user" => UserView.render("show.json", %{user: user, for: opts[:for]}),
|
"user" => UserView.render("show.json", %{user: user, for: opts[:for]}),
|
||||||
"statusnet_html" => html,
|
"statusnet_html" => html,
|
||||||
"text" => HTML.strip_tags(content),
|
"text" => HTML.strip_tags(content),
|
||||||
"is_local" => activity.local,
|
"is_local" => activity.local,
|
||||||
"is_post_verb" => true,
|
"is_post_verb" => true,
|
||||||
"created_at" => created_at,
|
"created_at" => created_at,
|
||||||
"in_reply_to_status_id" => object["inReplyToStatusId"],
|
"in_reply_to_status_id" => object.data["inReplyToStatusId"],
|
||||||
"in_reply_to_screen_name" => reply_user && reply_user.nickname,
|
"in_reply_to_screen_name" => reply_user && reply_user.nickname,
|
||||||
"in_reply_to_profileurl" => User.profile_url(reply_user),
|
"in_reply_to_profileurl" => User.profile_url(reply_user),
|
||||||
"in_reply_to_ostatus_uri" => reply_user && reply_user.ap_id,
|
"in_reply_to_ostatus_uri" => reply_user && reply_user.ap_id,
|
||||||
|
@ -205,12 +207,12 @@ def to_map(
|
||||||
"repeat_num" => announcement_count,
|
"repeat_num" => announcement_count,
|
||||||
"favorited" => to_boolean(favorited),
|
"favorited" => to_boolean(favorited),
|
||||||
"repeated" => to_boolean(repeated),
|
"repeated" => to_boolean(repeated),
|
||||||
"external_url" => object["external_url"] || object["id"],
|
"external_url" => object.data["external_url"] || object.data["id"],
|
||||||
"tags" => tags,
|
"tags" => tags,
|
||||||
"activity_type" => "post",
|
"activity_type" => "post",
|
||||||
"possibly_sensitive" => possibly_sensitive,
|
"possibly_sensitive" => possibly_sensitive,
|
||||||
"visibility" => Pleroma.Web.MastodonAPI.StatusView.get_visibility(object),
|
"visibility" => Pleroma.Web.MastodonAPI.StatusView.get_visibility(object.data),
|
||||||
"summary" => object["summary"]
|
"summary" => object.data["summary"]
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -225,8 +225,8 @@ def render(
|
||||||
|
|
||||||
conversation_id = get_context_id(activity, opts)
|
conversation_id = get_context_id(activity, opts)
|
||||||
|
|
||||||
tags = activity.data["object"]["tag"] || []
|
tags = object.data["tag"] || []
|
||||||
possibly_sensitive = activity.data["object"]["sensitive"] || Enum.member?(tags, "nsfw")
|
possibly_sensitive = object.data["sensitive"] || Enum.member?(tags, "nsfw")
|
||||||
|
|
||||||
tags = if possibly_sensitive, do: Enum.uniq(["nsfw" | tags]), else: tags
|
tags = if possibly_sensitive, do: Enum.uniq(["nsfw" | tags]), else: tags
|
||||||
|
|
||||||
|
@ -242,7 +242,7 @@ def render(
|
||||||
|
|
||||||
%{
|
%{
|
||||||
"id" => activity.id,
|
"id" => activity.id,
|
||||||
"uri" => activity.data["object"]["id"],
|
"uri" => object.data["id"],
|
||||||
"user" => UserView.render("show.json", %{user: user, for: opts[:for]}),
|
"user" => UserView.render("show.json", %{user: user, for: opts[:for]}),
|
||||||
"statusnet_html" => html,
|
"statusnet_html" => html,
|
||||||
"text" => HTML.strip_tags(content),
|
"text" => HTML.strip_tags(content),
|
||||||
|
|
Loading…
Reference in a new issue