Add E2EE API (#13820)
This commit is contained in:
		
							
								
								
									
										41
									
								
								app/presenters/activitypub/activity_presenter.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								app/presenters/activitypub/activity_presenter.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
class ActivityPub::ActivityPresenter < ActiveModelSerializers::Model
 | 
			
		||||
  attributes :id, :type, :actor, :published, :to, :cc, :virtual_object
 | 
			
		||||
 | 
			
		||||
  class << self
 | 
			
		||||
    def from_status(status)
 | 
			
		||||
      new.tap do |presenter|
 | 
			
		||||
        presenter.id        = ActivityPub::TagManager.instance.activity_uri_for(status)
 | 
			
		||||
        presenter.type      = status.reblog? ? 'Announce' : 'Create'
 | 
			
		||||
        presenter.actor     = ActivityPub::TagManager.instance.uri_for(status.account)
 | 
			
		||||
        presenter.published = status.created_at
 | 
			
		||||
        presenter.to        = ActivityPub::TagManager.instance.to(status)
 | 
			
		||||
        presenter.cc        = ActivityPub::TagManager.instance.cc(status)
 | 
			
		||||
 | 
			
		||||
        presenter.virtual_object = begin
 | 
			
		||||
          if status.reblog?
 | 
			
		||||
            if status.account == status.proper.account && status.proper.private_visibility? && status.local?
 | 
			
		||||
              status.proper
 | 
			
		||||
            else
 | 
			
		||||
              ActivityPub::TagManager.instance.uri_for(status.proper)
 | 
			
		||||
            end
 | 
			
		||||
          else
 | 
			
		||||
            status.proper
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def from_encrypted_message(encrypted_message)
 | 
			
		||||
      new.tap do |presenter|
 | 
			
		||||
        presenter.id = ActivityPub::TagManager.instance.generate_uri_for(nil)
 | 
			
		||||
        presenter.type = 'Create'
 | 
			
		||||
        presenter.actor = ActivityPub::TagManager.instance.uri_for(encrypted_message.source_account)
 | 
			
		||||
        presenter.published = Time.now.utc
 | 
			
		||||
        presenter.to = ActivityPub::TagManager.instance.uri_for(encrypted_message.target_account)
 | 
			
		||||
        presenter.virtual_object = encrypted_message
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user