Merge pull request 'Avoid code duplication in UserView' (#7817) from mkljczk/pleroma:user-view-repeat into develop
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7817
This commit is contained in:
commit
37cb2f9273
2 changed files with 32 additions and 43 deletions
1
changelog.d/user-view.ignore
Normal file
1
changelog.d/user-view.ignore
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Avoid code duplication in UserView
|
||||||
|
|
@ -35,32 +35,14 @@ defmodule Pleroma.Web.ActivityPub.UserView do
|
||||||
def render("endpoints.json", _), do: %{}
|
def render("endpoints.json", _), do: %{}
|
||||||
|
|
||||||
def render("service.json", %{user: user}) do
|
def render("service.json", %{user: user}) do
|
||||||
{:ok, _, public_key} = Keys.keys_from_pem(user.keys)
|
Map.merge(common_actor_fields(user), %{
|
||||||
public_key = :public_key.pem_entry_encode(:SubjectPublicKeyInfo, public_key)
|
|
||||||
public_key = :public_key.pem_encode([public_key])
|
|
||||||
|
|
||||||
endpoints = render("endpoints.json", %{user: user})
|
|
||||||
|
|
||||||
%{
|
|
||||||
"id" => user.ap_id,
|
|
||||||
"type" => "Application",
|
"type" => "Application",
|
||||||
"following" => "#{user.ap_id}/following",
|
|
||||||
"followers" => "#{user.ap_id}/followers",
|
|
||||||
"inbox" => "#{user.ap_id}/inbox",
|
|
||||||
"outbox" => "#{user.ap_id}/outbox",
|
|
||||||
"name" => "Pleroma",
|
"name" => "Pleroma",
|
||||||
"summary" =>
|
"summary" =>
|
||||||
"An internal service actor for this Pleroma instance. No user-serviceable parts inside.",
|
"An internal service actor for this Pleroma instance. No user-serviceable parts inside.",
|
||||||
"url" => user.ap_id,
|
|
||||||
"manuallyApprovesFollowers" => false,
|
"manuallyApprovesFollowers" => false,
|
||||||
"publicKey" => %{
|
|
||||||
"id" => "#{user.ap_id}#main-key",
|
|
||||||
"owner" => user.ap_id,
|
|
||||||
"publicKeyPem" => public_key
|
|
||||||
},
|
|
||||||
"endpoints" => endpoints,
|
|
||||||
"invisible" => User.invisible?(user)
|
"invisible" => User.invisible?(user)
|
||||||
}
|
})
|
||||||
|> Map.merge(Utils.make_json_ld_header())
|
|> Map.merge(Utils.make_json_ld_header())
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -77,13 +59,8 @@ defmodule Pleroma.Web.ActivityPub.UserView do
|
||||||
end
|
end
|
||||||
|
|
||||||
def render("user.json", %{user: user}) do
|
def render("user.json", %{user: user}) do
|
||||||
{:ok, _, public_key} = Keys.keys_from_pem(user.keys)
|
|
||||||
public_key = :public_key.pem_entry_encode(:SubjectPublicKeyInfo, public_key)
|
|
||||||
public_key = :public_key.pem_encode([public_key])
|
|
||||||
user = User.sanitize_html(user)
|
user = User.sanitize_html(user)
|
||||||
|
|
||||||
endpoints = render("endpoints.json", %{user: user})
|
|
||||||
|
|
||||||
emoji_tags = Transmogrifier.take_emoji_tags(user)
|
emoji_tags = Transmogrifier.take_emoji_tags(user)
|
||||||
|
|
||||||
fields = Enum.map(user.fields, &Map.put(&1, "type", "PropertyValue"))
|
fields = Enum.map(user.fields, &Map.put(&1, "type", "PropertyValue"))
|
||||||
|
|
@ -102,25 +79,9 @@ defmodule Pleroma.Web.ActivityPub.UserView do
|
||||||
do: Date.to_iso8601(user.birthday),
|
do: Date.to_iso8601(user.birthday),
|
||||||
else: nil
|
else: nil
|
||||||
|
|
||||||
%{
|
Map.merge(common_actor_fields(user), %{
|
||||||
"id" => user.ap_id,
|
|
||||||
"type" => user.actor_type,
|
|
||||||
"following" => "#{user.ap_id}/following",
|
|
||||||
"followers" => "#{user.ap_id}/followers",
|
|
||||||
"inbox" => "#{user.ap_id}/inbox",
|
|
||||||
"outbox" => "#{user.ap_id}/outbox",
|
|
||||||
"featured" => "#{user.ap_id}/collections/featured",
|
"featured" => "#{user.ap_id}/collections/featured",
|
||||||
"preferredUsername" => user.nickname,
|
"preferredUsername" => user.nickname,
|
||||||
"name" => user.name,
|
|
||||||
"summary" => user.bio,
|
|
||||||
"url" => user.ap_id,
|
|
||||||
"manuallyApprovesFollowers" => user.is_locked,
|
|
||||||
"publicKey" => %{
|
|
||||||
"id" => "#{user.ap_id}#main-key",
|
|
||||||
"owner" => user.ap_id,
|
|
||||||
"publicKeyPem" => public_key
|
|
||||||
},
|
|
||||||
"endpoints" => endpoints,
|
|
||||||
"attachment" => fields,
|
"attachment" => fields,
|
||||||
"tag" => emoji_tags,
|
"tag" => emoji_tags,
|
||||||
# Note: key name is indeed "discoverable" (not an error)
|
# Note: key name is indeed "discoverable" (not an error)
|
||||||
|
|
@ -130,7 +91,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do
|
||||||
"vcard:bday" => birthday,
|
"vcard:bday" => birthday,
|
||||||
"webfinger" => "acct:#{User.full_nickname(user)}",
|
"webfinger" => "acct:#{User.full_nickname(user)}",
|
||||||
"published" => Pleroma.Web.CommonAPI.Utils.to_masto_date(user.inserted_at)
|
"published" => Pleroma.Web.CommonAPI.Utils.to_masto_date(user.inserted_at)
|
||||||
}
|
})
|
||||||
|> Map.merge(
|
|> Map.merge(
|
||||||
maybe_make_image(
|
maybe_make_image(
|
||||||
&User.avatar_url/2,
|
&User.avatar_url/2,
|
||||||
|
|
@ -309,6 +270,33 @@ defmodule Pleroma.Web.ActivityPub.UserView do
|
||||||
|> Map.merge(Utils.make_json_ld_header())
|
|> Map.merge(Utils.make_json_ld_header())
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp common_actor_fields(%User{} = user) do
|
||||||
|
endpoints = render("endpoints.json", %{user: user})
|
||||||
|
|
||||||
|
{:ok, _, public_key} = Keys.keys_from_pem(user.keys)
|
||||||
|
public_key = :public_key.pem_entry_encode(:SubjectPublicKeyInfo, public_key)
|
||||||
|
public_key = :public_key.pem_encode([public_key])
|
||||||
|
|
||||||
|
%{
|
||||||
|
"id" => user.ap_id,
|
||||||
|
"type" => user.actor_type,
|
||||||
|
"following" => "#{user.ap_id}/following",
|
||||||
|
"followers" => "#{user.ap_id}/followers",
|
||||||
|
"inbox" => "#{user.ap_id}/inbox",
|
||||||
|
"outbox" => "#{user.ap_id}/outbox",
|
||||||
|
"name" => user.name,
|
||||||
|
"summary" => user.bio,
|
||||||
|
"url" => user.ap_id,
|
||||||
|
"manuallyApprovesFollowers" => user.is_locked,
|
||||||
|
"endpoints" => endpoints,
|
||||||
|
"publicKey" => %{
|
||||||
|
"id" => "#{user.ap_id}#main-key",
|
||||||
|
"owner" => user.ap_id,
|
||||||
|
"publicKeyPem" => public_key
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
defp maybe_put_total_items(map, false, _total), do: map
|
defp maybe_put_total_items(map, false, _total), do: map
|
||||||
|
|
||||||
defp maybe_put_total_items(map, true, total) do
|
defp maybe_put_total_items(map, true, total) do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue