class DiasporaFederation::Federation::Receiver::AbstractReceiver

Common functionality for receivers

Attributes

entity[R]
recipient_id[R]
sender[R]

Public Class Methods

new(magic_envelope, recipient_id=nil) click to toggle source

Creates a new receiver @param [MagicEnvelope] magic_envelope the received magic envelope @param [Object] recipient_id the identifier of the recipient of a private message

# File lib/diaspora_federation/federation/receiver/abstract_receiver.rb, line 13
def initialize(magic_envelope, recipient_id=nil)
  @entity = magic_envelope.payload
  @sender = magic_envelope.sender
  @recipient_id = recipient_id
end

Public Instance Methods

receive() click to toggle source

Validates and receives the entity

# File lib/diaspora_federation/federation/receiver/abstract_receiver.rb, line 20
def receive
  validate_and_receive
rescue => e # rubocop:disable Style/RescueStandardError
  logger.error "failed to receive #{entity}"
  raise e
end

Private Instance Methods

fetch_linked_entities_from_text() click to toggle source
# File lib/diaspora_federation/federation/receiver/abstract_receiver.rb, line 50
def fetch_linked_entities_from_text
  DiasporaUrlParser.fetch_linked_entities(entity.text) if entity.respond_to?(:text) && entity.text
end
sender_valid?() click to toggle source
# File lib/diaspora_federation/federation/receiver/abstract_receiver.rb, line 42
def sender_valid?
  if entity.respond_to?(:sender_valid?)
    entity.sender_valid?(sender)
  else
    sender == entity.author
  end
end
validate() click to toggle source
# File lib/diaspora_federation/federation/receiver/abstract_receiver.rb, line 38
def validate
  raise InvalidSender, "invalid sender: #{sender}" unless sender_valid?
end
validate_and_receive() click to toggle source
# File lib/diaspora_federation/federation/receiver/abstract_receiver.rb, line 31
def validate_and_receive
  validate
  fetch_linked_entities_from_text
  DiasporaFederation.callbacks.trigger(:receive_entity, entity, sender, recipient_id)
  logger.info "successfully received #{entity} from person #{sender}#{" for #{recipient_id}" if recipient_id}"
end