Encode custom emojis as resolveable objects in ActivityPub (#5243)
* Encode custom emojis as resolveable objects in ActivityPub * Improve code style
This commit is contained in:
		
							parent
							
								
									057db0ecd0
								
							
						
					
					
						commit
						3a3475450e
					
				
					 17 changed files with 132 additions and 48 deletions
				
			
		| 
						 | 
				
			
			@ -10,20 +10,6 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer
 | 
			
		|||
 | 
			
		||||
  has_one :public_key, serializer: ActivityPub::PublicKeySerializer
 | 
			
		||||
 | 
			
		||||
  class ImageSerializer < ActiveModel::Serializer
 | 
			
		||||
    include RoutingHelper
 | 
			
		||||
 | 
			
		||||
    attributes :type, :url
 | 
			
		||||
 | 
			
		||||
    def type
 | 
			
		||||
      'Image'
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def url
 | 
			
		||||
      full_asset_url(object.url(:original))
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  class EndpointsSerializer < ActiveModel::Serializer
 | 
			
		||||
    include RoutingHelper
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -36,8 +22,8 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer
 | 
			
		|||
 | 
			
		||||
  has_one :endpoints, serializer: EndpointsSerializer
 | 
			
		||||
 | 
			
		||||
  has_one :icon,  serializer: ImageSerializer, if: :avatar_exists?
 | 
			
		||||
  has_one :image, serializer: ImageSerializer, if: :header_exists?
 | 
			
		||||
  has_one :icon,  serializer: ActivityPub::ImageSerializer, if: :avatar_exists?
 | 
			
		||||
  has_one :image, serializer: ActivityPub::ImageSerializer, if: :header_exists?
 | 
			
		||||
 | 
			
		||||
  def id
 | 
			
		||||
    account_url(object)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										29
									
								
								app/serializers/activitypub/emoji_serializer.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								app/serializers/activitypub/emoji_serializer.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
class ActivityPub::EmojiSerializer < ActiveModel::Serializer
 | 
			
		||||
  include RoutingHelper
 | 
			
		||||
 | 
			
		||||
  attributes :id, :type, :name, :updated
 | 
			
		||||
 | 
			
		||||
  has_one :icon, serializer: ActivityPub::ImageSerializer
 | 
			
		||||
 | 
			
		||||
  def id
 | 
			
		||||
    ActivityPub::TagManager.instance.uri_for(object)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def type
 | 
			
		||||
    'Emoji'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def icon
 | 
			
		||||
    object.image
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def updated
 | 
			
		||||
    object.updated_at.iso8601
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def name
 | 
			
		||||
    ":#{object.shortcode}:"
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										19
									
								
								app/serializers/activitypub/image_serializer.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								app/serializers/activitypub/image_serializer.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
class ActivityPub::ImageSerializer < ActiveModel::Serializer
 | 
			
		||||
  include RoutingHelper
 | 
			
		||||
 | 
			
		||||
  attributes :type, :media_type, :url
 | 
			
		||||
 | 
			
		||||
  def type
 | 
			
		||||
    'Image'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def url
 | 
			
		||||
    full_asset_url(object.url(:original))
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def media_type
 | 
			
		||||
    object.content_type
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -142,21 +142,6 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  class CustomEmojiSerializer < ActiveModel::Serializer
 | 
			
		||||
    include RoutingHelper
 | 
			
		||||
 | 
			
		||||
    attributes :type, :href, :name
 | 
			
		||||
 | 
			
		||||
    def type
 | 
			
		||||
      'Emoji'
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def href
 | 
			
		||||
      full_asset_url(object.image.url)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def name
 | 
			
		||||
      ":#{object.shortcode}:"
 | 
			
		||||
    end
 | 
			
		||||
  class CustomEmojiSerializer < ActivityPub::EmojiSerializer
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue