better logging for receiving

This commit is contained in:
Benjamin Neff 2016-04-03 03:33:08 +02:00
parent a8af94f192
commit 0c4307a4de
4 changed files with 32 additions and 11 deletions

View file

@ -2,6 +2,8 @@ module DiasporaFederation
module Federation
# this module is for parse and receive entities.
module Receiver
extend Logging
# receive a public message
# @param [String] data message to receive
# @param [Boolean] legacy use old slap parser
@ -13,6 +15,10 @@ module DiasporaFederation
Salmon::MagicEnvelope.unenvelop(magic_env_xml)
end
Public.new(magic_env).receive
rescue => e
logger.error "failed to receive public message: #{e.class}: #{e.message}"
logger.debug "received data:\n#{data}"
raise e
end
# receive a private message
@ -30,6 +36,10 @@ module DiasporaFederation
Salmon::MagicEnvelope.unenvelop(magic_env_xml)
end
Private.new(magic_env, recipient_id).receive
rescue => e
logger.error "failed to receive private message for #{recipient_id}: #{e.class}: #{e.message}"
logger.debug "received data:\n#{data}"
raise e
end
end
end

View file

@ -3,6 +3,8 @@ module DiasporaFederation
module Receiver
# common functionality for receivers
class AbstractReceiver
include Logging
# create a new receiver
# @param [MagicEnvelope] magic_envelope the received magic envelope
# @param [Object] recipient_id the identifier of the recipient of a private message
@ -14,16 +16,25 @@ module DiasporaFederation
# validate and receive the entity
def receive
validate
DiasporaFederation.callbacks.trigger(:receive_entity, entity, recipient_id)
validate_and_receive
rescue => e
logger.error "failed to receive #{entity.class}#{":#{entity.guid}" if entity.respond_to?(:guid)}"
raise e
end
private
attr_reader :entity, :sender, :recipient_id
def validate_and_receive
validate
DiasporaFederation.callbacks.trigger(:receive_entity, entity, recipient_id)
logger.info "successfully received #{entity.class}#{":#{entity.guid}" if entity.respond_to?(:guid)}" \
"from person #{sender}#{" for #{recipient_id}" if recipient_id}"
end
def validate
raise InvalidSender unless sender_valid?
raise InvalidSender, "invalid sender: #{sender}" unless sender_valid?
end
def sender_valid?

View file

@ -17,7 +17,7 @@ module DiasporaFederation
expect {
described_class.new(bad_env, recipient).receive
}.to raise_error Federation::Receiver::InvalidSender
}.to raise_error Federation::Receiver::InvalidSender, "invalid sender: #{sender}"
end
it "validates the recipient" do
@ -51,7 +51,7 @@ module DiasporaFederation
expect {
described_class.new(bad_env, recipient).receive
}.to raise_error Federation::Receiver::InvalidSender
}.to raise_error Federation::Receiver::InvalidSender, "invalid sender: #{sender}"
end
end
@ -73,7 +73,7 @@ module DiasporaFederation
expect {
described_class.new(bad_env, recipient).receive
}.to raise_error Federation::Receiver::InvalidSender
}.to raise_error Federation::Receiver::InvalidSender, "invalid sender: #{sender}"
end
end
@ -108,7 +108,7 @@ module DiasporaFederation
expect {
described_class.new(bad_env, recipient).receive
}.to raise_error Federation::Receiver::InvalidSender
}.to raise_error Federation::Receiver::InvalidSender, "invalid sender: #{sender}"
end
end
end

View file

@ -16,7 +16,7 @@ module DiasporaFederation
expect {
described_class.new(bad_env).receive
}.to raise_error Federation::Receiver::InvalidSender
}.to raise_error Federation::Receiver::InvalidSender, "invalid sender: #{sender}"
end
context "with relayable" do
@ -44,7 +44,7 @@ module DiasporaFederation
expect {
described_class.new(bad_env).receive
}.to raise_error Federation::Receiver::InvalidSender
}.to raise_error Federation::Receiver::InvalidSender, "invalid sender: #{sender}"
end
end
@ -66,7 +66,7 @@ module DiasporaFederation
expect {
described_class.new(bad_env).receive
}.to raise_error Federation::Receiver::InvalidSender
}.to raise_error Federation::Receiver::InvalidSender, "invalid sender: #{sender}"
end
end
@ -101,7 +101,7 @@ module DiasporaFederation
expect {
described_class.new(bad_env).receive
}.to raise_error Federation::Receiver::InvalidSender
}.to raise_error Federation::Receiver::InvalidSender, "invalid sender: #{sender}"
end
end
end