diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-07-17 02:37:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-17 02:37:27 +0200 |
commit | a47c2e88909b87392f041a75d43624f14470fd71 (patch) | |
tree | ac72665258cdb391d64fa68b13da5c9161b7d130 /app/serializers | |
parent | a3202fd51e240050a12ddf1170e3e6e2b1532bbf (diff) |
Add public key declaration to actors (#4215)
Diffstat (limited to 'app/serializers')
-rw-r--r-- | app/serializers/activitypub/actor_serializer.rb | 6 | ||||
-rw-r--r-- | app/serializers/activitypub/public_key_serializer.rb | 17 |
2 files changed, 23 insertions, 0 deletions
diff --git a/app/serializers/activitypub/actor_serializer.rb b/app/serializers/activitypub/actor_serializer.rb index 56806152e..f5e626d73 100644 --- a/app/serializers/activitypub/actor_serializer.rb +++ b/app/serializers/activitypub/actor_serializer.rb @@ -7,6 +7,8 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer :inbox, :outbox, :preferred_username, :name, :summary, :icon, :image + has_one :public_key, serializer: ActivityPub::PublicKeySerializer + def id account_url(object) end @@ -50,4 +52,8 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer def image full_asset_url(object.header.url(:original)) end + + def public_key + object + end end diff --git a/app/serializers/activitypub/public_key_serializer.rb b/app/serializers/activitypub/public_key_serializer.rb new file mode 100644 index 000000000..38e9e93ba --- /dev/null +++ b/app/serializers/activitypub/public_key_serializer.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class ActivityPub::PublicKeySerializer < ActiveModel::Serializer + attributes :id, :owner, :public_key_pem + + def id + [ActivityPub::TagManager.instance.uri_for(object), '#main-key'].join + end + + def owner + ActivityPub::TagManager.instance.uri_for(object) + end + + def public_key_pem + object.public_key + end +end |