about summary refs log tree commit diff
path: root/app/serializers/activitypub
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2020-06-04 19:03:31 +0200
committerGitHub <noreply@github.com>2020-06-04 19:03:31 +0200
commitaed3a436a2dbef40096ec8596cec08e185efe936 (patch)
tree11830cfb126e6c10c94ab8990943182deb053cc5 /app/serializers/activitypub
parentf669b8bcceb5043e468b3319c0bb7e834e3892d4 (diff)
Fix serialization of replies when some of them are URIs (#13957)
* Fix serialization of replies when some of them are URIs

Fixes #13956

* Add test
Diffstat (limited to 'app/serializers/activitypub')
-rw-r--r--app/serializers/activitypub/collection_serializer.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/app/serializers/activitypub/collection_serializer.rb b/app/serializers/activitypub/collection_serializer.rb
index 00c7b786a..ea7af5433 100644
--- a/app/serializers/activitypub/collection_serializer.rb
+++ b/app/serializers/activitypub/collection_serializer.rb
@@ -1,6 +1,15 @@
 # frozen_string_literal: true
 
 class ActivityPub::CollectionSerializer < ActivityPub::Serializer
+  class StringSerializer < ActiveModel::Serializer
+    # Despite the name, it does not return a hash, but the same can be said of
+    # the ActiveModel::Serializer::CollectionSerializer class which handles
+    # arrays.
+    def serializable_hash(*_args)
+      object
+    end
+  end
+
   def self.serializer_for(model, options)
     case model.class.name
     when 'Status'
@@ -9,6 +18,8 @@ class ActivityPub::CollectionSerializer < ActivityPub::Serializer
       ActivityPub::DeviceSerializer
     when 'ActivityPub::CollectionPresenter'
       ActivityPub::CollectionSerializer
+    when 'String'
+      StringSerializer
     else
       super
     end