From 0c4307a4de84dbd5a60f345b31548b51b1062fd4 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 3 Apr 2016 03:33:08 +0200 Subject: [PATCH] better logging for receiving --- lib/diaspora_federation/federation/receiver.rb | 10 ++++++++++ .../federation/receiver/abstract_receiver.rb | 17 ++++++++++++++--- .../federation/receiver/private_spec.rb | 8 ++++---- .../federation/receiver/public_spec.rb | 8 ++++---- 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/lib/diaspora_federation/federation/receiver.rb b/lib/diaspora_federation/federation/receiver.rb index d62398c..71b6686 100644 --- a/lib/diaspora_federation/federation/receiver.rb +++ b/lib/diaspora_federation/federation/receiver.rb @@ -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 diff --git a/lib/diaspora_federation/federation/receiver/abstract_receiver.rb b/lib/diaspora_federation/federation/receiver/abstract_receiver.rb index 40c97f8..fcfc6cc 100644 --- a/lib/diaspora_federation/federation/receiver/abstract_receiver.rb +++ b/lib/diaspora_federation/federation/receiver/abstract_receiver.rb @@ -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? diff --git a/spec/lib/diaspora_federation/federation/receiver/private_spec.rb b/spec/lib/diaspora_federation/federation/receiver/private_spec.rb index bee4ce1..74a9024 100644 --- a/spec/lib/diaspora_federation/federation/receiver/private_spec.rb +++ b/spec/lib/diaspora_federation/federation/receiver/private_spec.rb @@ -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 diff --git a/spec/lib/diaspora_federation/federation/receiver/public_spec.rb b/spec/lib/diaspora_federation/federation/receiver/public_spec.rb index 348e331..ad4a0b9 100644 --- a/spec/lib/diaspora_federation/federation/receiver/public_spec.rb +++ b/spec/lib/diaspora_federation/federation/receiver/public_spec.rb @@ -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