Improve ActivityPub representations (#3844)
* Improve webfinger templates and make tests more flexible * Clean up AS2 representation of actor * Refactor outbox * Create activities representation * Add representations of followers/following collections, do not redirect /users/:username route if format is empty * Remove unused translations * ActivityPub endpoint for single statuses, add ActivityPub::TagManager for better URL/URI generation * Add ActivityPub::TagManager#to * Represent all attachments as Document instead of Image/Video specifically (Because for remote ones we may not know for sure) Add mentions and hashtags representation to AP notes * Add AP-resolvable hashtag URIs * Use ActiveModelSerializers for ActivityPub * Clean up unused translations * Separate route for object and activity * Adjust cc/to matrices * Add to/cc to activities, ensure announce activity embeds target status and not the wrapper status, add "id" to all collections
This commit is contained in:
parent
3fbf1bf35a
commit
8c45cd0e36
61 changed files with 443 additions and 725 deletions
53
app/serializers/activitypub/actor_serializer.rb
Normal file
53
app/serializers/activitypub/actor_serializer.rb
Normal file
|
@ -0,0 +1,53 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ActivityPub::ActorSerializer < ActiveModel::Serializer
|
||||
include RoutingHelper
|
||||
|
||||
attributes :id, :type, :following, :followers,
|
||||
:inbox, :outbox, :preferred_username,
|
||||
:name, :summary, :icon, :image
|
||||
|
||||
def id
|
||||
account_url(object)
|
||||
end
|
||||
|
||||
def type
|
||||
'Person'
|
||||
end
|
||||
|
||||
def following
|
||||
account_following_index_url(object)
|
||||
end
|
||||
|
||||
def followers
|
||||
account_followers_url(object)
|
||||
end
|
||||
|
||||
def inbox
|
||||
nil
|
||||
end
|
||||
|
||||
def outbox
|
||||
account_outbox_url(object)
|
||||
end
|
||||
|
||||
def preferred_username
|
||||
object.username
|
||||
end
|
||||
|
||||
def name
|
||||
object.display_name
|
||||
end
|
||||
|
||||
def summary
|
||||
Formatter.instance.simplified_format(object)
|
||||
end
|
||||
|
||||
def icon
|
||||
full_asset_url(object.avatar.url(:original))
|
||||
end
|
||||
|
||||
def image
|
||||
full_asset_url(object.header.url(:original))
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue