summaryrefslogtreecommitdiffstats
path: root/app/serializers/activitypub/actor_serializer.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-07-15 03:01:39 +0200
committerGitHub <noreply@github.com>2017-07-15 03:01:39 +0200
commit8c45cd0e3683b528b65f416681c8272d5650f32d (patch)
treeaee4a1e6d339446f7d9cc59fab61547353b89e56 /app/serializers/activitypub/actor_serializer.rb
parent3fbf1bf35acf89d1e397fa2e632529bf5105fe02 (diff)
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
Diffstat (limited to 'app/serializers/activitypub/actor_serializer.rb')
-rw-r--r--app/serializers/activitypub/actor_serializer.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/app/serializers/activitypub/actor_serializer.rb b/app/serializers/activitypub/actor_serializer.rb
new file mode 100644
index 00000000000..56806152eed
--- /dev/null
+++ b/app/serializers/activitypub/actor_serializer.rb
@@ -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