about summary refs log tree commit diff
path: root/app/serializers/activitypub
diff options
context:
space:
mode:
Diffstat (limited to 'app/serializers/activitypub')
-rw-r--r--app/serializers/activitypub/accept_follow_serializer.rb15
-rw-r--r--app/serializers/activitypub/actor_serializer.rb6
-rw-r--r--app/serializers/activitypub/block_serializer.rb18
-rw-r--r--app/serializers/activitypub/collection_serializer.rb3
-rw-r--r--app/serializers/activitypub/delete_serializer.rb18
-rw-r--r--app/serializers/activitypub/follow_serializer.rb18
-rw-r--r--app/serializers/activitypub/like_serializer.rb18
-rw-r--r--app/serializers/activitypub/note_serializer.rb4
-rw-r--r--app/serializers/activitypub/public_key_serializer.rb17
-rw-r--r--app/serializers/activitypub/reject_follow_serializer.rb15
-rw-r--r--app/serializers/activitypub/undo_block_serializer.rb15
-rw-r--r--app/serializers/activitypub/undo_follow_serializer.rb15
-rw-r--r--app/serializers/activitypub/undo_like_serializer.rb15
-rw-r--r--app/serializers/activitypub/update_serializer.rb15
14 files changed, 188 insertions, 4 deletions
diff --git a/app/serializers/activitypub/accept_follow_serializer.rb b/app/serializers/activitypub/accept_follow_serializer.rb
new file mode 100644
index 000000000..ce900bc78
--- /dev/null
+++ b/app/serializers/activitypub/accept_follow_serializer.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class ActivityPub::AcceptFollowSerializer < ActiveModel::Serializer
+  attributes :type, :actor
+
+  has_one :object, serializer: ActivityPub::FollowSerializer
+
+  def type
+    'Accept'
+  end
+
+  def actor
+    ActivityPub::TagManager.instance.uri_for(object.target_account)
+  end
+end
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/block_serializer.rb b/app/serializers/activitypub/block_serializer.rb
new file mode 100644
index 000000000..a001b213b
--- /dev/null
+++ b/app/serializers/activitypub/block_serializer.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class ActivityPub::BlockSerializer < ActiveModel::Serializer
+  attributes :type, :actor
+  attribute :virtual_object, key: :object
+
+  def type
+    'Block'
+  end
+
+  def actor
+    ActivityPub::TagManager.instance.uri_for(object.account)
+  end
+
+  def virtual_object
+    ActivityPub::TagManager.instance.uri_for(object.target_account)
+  end
+end
diff --git a/app/serializers/activitypub/collection_serializer.rb b/app/serializers/activitypub/collection_serializer.rb
index baaba7654..d01dead28 100644
--- a/app/serializers/activitypub/collection_serializer.rb
+++ b/app/serializers/activitypub/collection_serializer.rb
@@ -6,8 +6,7 @@ class ActivityPub::CollectionSerializer < ActiveModel::Serializer
     super
   end
 
-  attributes :id, :type, :total_items,
-             :current
+  attributes :id, :type, :total_items
 
   has_many :items, key: :ordered_items
 
diff --git a/app/serializers/activitypub/delete_serializer.rb b/app/serializers/activitypub/delete_serializer.rb
new file mode 100644
index 000000000..77098b1b0
--- /dev/null
+++ b/app/serializers/activitypub/delete_serializer.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class ActivityPub::DeleteSerializer < ActiveModel::Serializer
+  attributes :type, :actor
+  attribute :virtual_object, key: :object
+
+  def type
+    'Delete'
+  end
+
+  def actor
+    ActivityPub::TagManager.instance.uri_for(object.account)
+  end
+
+  def virtual_object
+    ActivityPub::TagManager.instance.uri_for(object)
+  end
+end
diff --git a/app/serializers/activitypub/follow_serializer.rb b/app/serializers/activitypub/follow_serializer.rb
new file mode 100644
index 000000000..1953a2d7b
--- /dev/null
+++ b/app/serializers/activitypub/follow_serializer.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class ActivityPub::FollowSerializer < ActiveModel::Serializer
+  attributes :type, :actor
+  attribute :virtual_object, key: :object
+
+  def type
+    'Follow'
+  end
+
+  def actor
+    ActivityPub::TagManager.instance.uri_for(object.account)
+  end
+
+  def virtual_object
+    ActivityPub::TagManager.instance.uri_for(object.target_account)
+  end
+end
diff --git a/app/serializers/activitypub/like_serializer.rb b/app/serializers/activitypub/like_serializer.rb
new file mode 100644
index 000000000..4226913f5
--- /dev/null
+++ b/app/serializers/activitypub/like_serializer.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class ActivityPub::LikeSerializer < ActiveModel::Serializer
+  attributes :type, :actor
+  attribute :virtual_object, key: :object
+
+  def type
+    'Like'
+  end
+
+  def actor
+    ActivityPub::TagManager.instance.uri_for(object.account)
+  end
+
+  def virtual_object
+    ActivityPub::TagManager.instance.uri_for(object.status)
+  end
+end
diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb
index ffdc6175d..4c13f8e59 100644
--- a/app/serializers/activitypub/note_serializer.rb
+++ b/app/serializers/activitypub/note_serializer.rb
@@ -3,7 +3,7 @@
 class ActivityPub::NoteSerializer < ActiveModel::Serializer
   attributes :id, :type, :summary, :content,
              :in_reply_to, :published, :url,
-             :actor, :to, :cc, :sensitive
+             :attributed_to, :to, :cc, :sensitive
 
   has_many :media_attachments, key: :attachment
   has_many :virtual_tags, key: :tag
@@ -36,7 +36,7 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
     ActivityPub::TagManager.instance.url_for(object)
   end
 
-  def actor
+  def attributed_to
     ActivityPub::TagManager.instance.uri_for(object.account)
   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
diff --git a/app/serializers/activitypub/reject_follow_serializer.rb b/app/serializers/activitypub/reject_follow_serializer.rb
new file mode 100644
index 000000000..28584d627
--- /dev/null
+++ b/app/serializers/activitypub/reject_follow_serializer.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class ActivityPub::RejectFollowSerializer < ActiveModel::Serializer
+  attributes :type, :actor
+
+  has_one :object, serializer: ActivityPub::FollowSerializer
+
+  def type
+    'Reject'
+  end
+
+  def actor
+    ActivityPub::TagManager.instance.uri_for(object.target_account)
+  end
+end
diff --git a/app/serializers/activitypub/undo_block_serializer.rb b/app/serializers/activitypub/undo_block_serializer.rb
new file mode 100644
index 000000000..f71faa729
--- /dev/null
+++ b/app/serializers/activitypub/undo_block_serializer.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class ActivityPub::UndoBlockSerializer < ActiveModel::Serializer
+  attributes :type, :actor
+
+  has_one :object, serializer: ActivityPub::BlockSerializer
+
+  def type
+    'Undo'
+  end
+
+  def actor
+    ActivityPub::TagManager.instance.uri_for(object.account)
+  end
+end
diff --git a/app/serializers/activitypub/undo_follow_serializer.rb b/app/serializers/activitypub/undo_follow_serializer.rb
new file mode 100644
index 000000000..fe91f5f1c
--- /dev/null
+++ b/app/serializers/activitypub/undo_follow_serializer.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class ActivityPub::UndoFollowSerializer < ActiveModel::Serializer
+  attributes :type, :actor
+
+  has_one :object, serializer: ActivityPub::FollowSerializer
+
+  def type
+    'Undo'
+  end
+
+  def actor
+    ActivityPub::TagManager.instance.uri_for(object.account)
+  end
+end
diff --git a/app/serializers/activitypub/undo_like_serializer.rb b/app/serializers/activitypub/undo_like_serializer.rb
new file mode 100644
index 000000000..db9cd1d0d
--- /dev/null
+++ b/app/serializers/activitypub/undo_like_serializer.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class ActivityPub::UndoLikeSerializer < ActiveModel::Serializer
+  attributes :type, :actor
+
+  has_one :object, serializer: ActivityPub::LikeSerializer
+
+  def type
+    'Undo'
+  end
+
+  def actor
+    ActivityPub::TagManager.instance.uri_for(object.account)
+  end
+end
diff --git a/app/serializers/activitypub/update_serializer.rb b/app/serializers/activitypub/update_serializer.rb
new file mode 100644
index 000000000..322305da8
--- /dev/null
+++ b/app/serializers/activitypub/update_serializer.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class ActivityPub::UpdateSerializer < ActiveModel::Serializer
+  attributes :type, :actor
+
+  has_one :object, serializer: ActivityPub::ActorSerializer
+
+  def type
+    'Update'
+  end
+
+  def actor
+    ActivityPub::TagManager.instance.uri_for(object)
+  end
+end