about summary refs log tree commit diff
path: root/app/serializers/activitypub/collection_serializer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/serializers/activitypub/collection_serializer.rb')
-rw-r--r--app/serializers/activitypub/collection_serializer.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/app/serializers/activitypub/collection_serializer.rb b/app/serializers/activitypub/collection_serializer.rb
new file mode 100644
index 000000000..baaba7654
--- /dev/null
+++ b/app/serializers/activitypub/collection_serializer.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+class ActivityPub::CollectionSerializer < ActiveModel::Serializer
+  def self.serializer_for(model, options)
+    return ActivityPub::ActivitySerializer if model.class.name == 'Status'
+    super
+  end
+
+  attributes :id, :type, :total_items,
+             :current
+
+  has_many :items, key: :ordered_items
+
+  def type
+    case object.type
+    when :ordered
+      'OrderedCollection'
+    else
+      'Collection'
+    end
+  end
+
+  def total_items
+    object.size
+  end
+end