commit: a47c2e88909b87392f041a75d43624f14470fd71
parent: a3202fd51e240050a12ddf1170e3e6e2b1532bbf
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Mon, 17 Jul 2017 02:37:27 +0200
Add public key declaration to actors (#4215)
Diffstat:
2 files changed, 23 insertions(+), 0 deletions(-)
diff --git 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
@@ -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