diff --git a/lib/diaspora_federation/entities/relayable.rb b/lib/diaspora_federation/entities/relayable.rb index 63a6daa..df8818f 100644 --- a/lib/diaspora_federation/entities/relayable.rb +++ b/lib/diaspora_federation/entities/relayable.rb @@ -151,11 +151,11 @@ module DiasporaFederation # if the signatures are not there yet and if the keys are available. # # @return [Hash] sorted xml elements with updated signatures - def xml_elements - xml_data = super.merge(additional_xml_elements) - signature_order.map {|element| [element, xml_data[element] || ""] }.to_h.tap do |xml_elements| - xml_elements[:author_signature] = author_signature || sign_with_author - xml_elements[:parent_author_signature] = parent_author_signature || sign_with_parent_author_if_available.to_s + def enriched_properties + data = super.merge(additional_xml_elements) + signature_order.map {|element| [element, data[element] || ""] }.to_h.tap do |hash| + hash[:author_signature] = author_signature || sign_with_author + hash[:parent_author_signature] = parent_author_signature || sign_with_parent_author_if_available.to_s end end @@ -172,7 +172,7 @@ module DiasporaFederation # @return [String] signature data string def signature_data - data = to_h.merge(additional_xml_elements) + data = normalized_properties.merge(additional_xml_elements) signature_order.map {|name| data[name] }.join(";") end diff --git a/lib/diaspora_federation/entities/relayable_retraction.rb b/lib/diaspora_federation/entities/relayable_retraction.rb index 48063ab..8d742ad 100644 --- a/lib/diaspora_federation/entities/relayable_retraction.rb +++ b/lib/diaspora_federation/entities/relayable_retraction.rb @@ -83,11 +83,11 @@ module DiasporaFederation # if the signatures are not there yet and if the keys are available. # # @return [Hash] xml elements with updated signatures - def xml_elements + def enriched_properties privkey = DiasporaFederation.callbacks.trigger(:fetch_private_key, author) - super.tap do |xml_elements| - fill_required_signature(privkey, xml_elements) unless privkey.nil? + super.tap do |hash| + fill_required_signature(privkey, hash) unless privkey.nil? end end diff --git a/lib/diaspora_federation/entities/signed_retraction.rb b/lib/diaspora_federation/entities/signed_retraction.rb index 92a56f0..9df148a 100644 --- a/lib/diaspora_federation/entities/signed_retraction.rb +++ b/lib/diaspora_federation/entities/signed_retraction.rb @@ -68,9 +68,9 @@ module DiasporaFederation # if the signatures are not there yet and if the keys are available. # # @return [Hash] xml elements with updated signatures - def xml_elements - super.tap do |xml_elements| - xml_elements[:target_author_signature] = target_author_signature || sign_with_author.to_s + def enriched_properties + super.tap do |hash| + hash[:target_author_signature] = target_author_signature || sign_with_author.to_s end end diff --git a/lib/diaspora_federation/entity.rb b/lib/diaspora_federation/entity.rb index 690f9fe..34b1874 100644 --- a/lib/diaspora_federation/entity.rb +++ b/lib/diaspora_federation/entity.rb @@ -96,7 +96,7 @@ module DiasporaFederation def to_xml doc = Nokogiri::XML::DocumentFragment.new(Nokogiri::XML::Document.new) Nokogiri::XML::Element.new(self.class.entity_name, doc).tap do |root_element| - xml_elements.each do |name, value| + enriched_properties.each do |name, value| add_property_to_xml(doc, root_element, name, value) end end @@ -215,10 +215,15 @@ module DiasporaFederation end end - def xml_elements + def normalized_properties properties.map {|name, value| [name, self.class.class_props[name] == String ? value.to_s : value] }.to_h end + # default: nothing to enrich + def enriched_properties + normalized_properties + end + def add_property_to_xml(doc, root_element, name, value) if value.is_a? String root_element << simple_node(doc, name, value) diff --git a/spec/lib/diaspora_federation/entities/comment_spec.rb b/spec/lib/diaspora_federation/entities/comment_spec.rb index e455ee3..1e630c0 100644 --- a/spec/lib/diaspora_federation/entities/comment_spec.rb +++ b/spec/lib/diaspora_federation/entities/comment_spec.rb @@ -4,7 +4,7 @@ module DiasporaFederation let(:parent_entity) { FactoryGirl.build(:related_entity, author: bob.diaspora_id) } let(:data) { FactoryGirl.build(:comment_entity, author: alice.diaspora_id, parent_guid: parent.guid, parent: parent_entity) - .send(:xml_elements).merge(created_at: Time.now.utc, parent: parent_entity) + .send(:enriched_properties).merge(created_at: Time.now.utc, parent: parent_entity) } let(:xml) { <<-XML } diff --git a/spec/lib/diaspora_federation/entities/conversation_spec.rb b/spec/lib/diaspora_federation/entities/conversation_spec.rb index 2893a85..903053e 100644 --- a/spec/lib/diaspora_federation/entities/conversation_spec.rb +++ b/spec/lib/diaspora_federation/entities/conversation_spec.rb @@ -4,11 +4,11 @@ module DiasporaFederation let(:parent_entity) { FactoryGirl.build(:related_entity, author: bob.diaspora_id) } let(:signed_msg1) { FactoryGirl.build(:message_entity, author: bob.diaspora_id, parent_guid: parent.guid, parent: parent_entity) - .send(:xml_elements).merge(parent: parent_entity) + .send(:enriched_properties).merge(parent: parent_entity) } let(:signed_msg2) { FactoryGirl.build(:message_entity, author: bob.diaspora_id, parent_guid: parent.guid, parent: parent_entity) - .send(:xml_elements).merge(parent: parent_entity) + .send(:enriched_properties).merge(parent: parent_entity) } let(:data) { FactoryGirl.attributes_for(:conversation_entity).merge!( diff --git a/spec/lib/diaspora_federation/entities/like_spec.rb b/spec/lib/diaspora_federation/entities/like_spec.rb index b6329a5..c298112 100644 --- a/spec/lib/diaspora_federation/entities/like_spec.rb +++ b/spec/lib/diaspora_federation/entities/like_spec.rb @@ -9,7 +9,7 @@ module DiasporaFederation parent_guid: parent.guid, parent_type: parent.entity_type, parent: parent_entity - ).send(:xml_elements).merge(parent: parent_entity) + ).send(:enriched_properties).merge(parent: parent_entity) } let(:xml) { <<-XML } diff --git a/spec/lib/diaspora_federation/entities/message_spec.rb b/spec/lib/diaspora_federation/entities/message_spec.rb index df5beaa..1fa9b1b 100644 --- a/spec/lib/diaspora_federation/entities/message_spec.rb +++ b/spec/lib/diaspora_federation/entities/message_spec.rb @@ -4,7 +4,7 @@ module DiasporaFederation let(:parent_entity) { FactoryGirl.build(:related_entity, author: bob.diaspora_id) } let(:data) { FactoryGirl.build(:message_entity, author: alice.diaspora_id, parent_guid: parent.guid, parent: parent_entity) - .send(:xml_elements).merge(parent: parent_entity) + .send(:enriched_properties).merge(parent: parent_entity) } let(:xml) { <<-XML } diff --git a/spec/lib/diaspora_federation/entities/participation_spec.rb b/spec/lib/diaspora_federation/entities/participation_spec.rb index 5015763..19e51b3 100644 --- a/spec/lib/diaspora_federation/entities/participation_spec.rb +++ b/spec/lib/diaspora_federation/entities/participation_spec.rb @@ -9,7 +9,7 @@ module DiasporaFederation parent_guid: parent.guid, parent_type: parent.entity_type, parent: parent_entity - ).send(:xml_elements).merge(parent: parent_entity) + ).send(:enriched_properties).merge(parent: parent_entity) } let(:xml) { <<-XML } diff --git a/spec/lib/diaspora_federation/entities/poll_participation_spec.rb b/spec/lib/diaspora_federation/entities/poll_participation_spec.rb index 39d2d87..dd2361f 100644 --- a/spec/lib/diaspora_federation/entities/poll_participation_spec.rb +++ b/spec/lib/diaspora_federation/entities/poll_participation_spec.rb @@ -8,7 +8,7 @@ module DiasporaFederation author: alice.diaspora_id, parent_guid: parent.guid, parent: parent_entity - ).send(:xml_elements).merge(parent: parent_entity) + ).send(:enriched_properties).merge(parent: parent_entity) } let(:xml) { <<-XML } diff --git a/spec/lib/diaspora_federation/entities/relayable_retraction_spec.rb b/spec/lib/diaspora_federation/entities/relayable_retraction_spec.rb index 4fabd02..031cbe7 100644 --- a/spec/lib/diaspora_federation/entities/relayable_retraction_spec.rb +++ b/spec/lib/diaspora_federation/entities/relayable_retraction_spec.rb @@ -15,7 +15,7 @@ module DiasporaFederation target_guid: target.guid, target_type: target.entity_type, target: target_entity - ).send(:xml_elements).tap do |data| + ).send(:enriched_properties).tap do |data| data[:target_author_signature] = nil data[:target] = target_entity end diff --git a/spec/lib/diaspora_federation/entities/signed_retraction_spec.rb b/spec/lib/diaspora_federation/entities/signed_retraction_spec.rb index 1d4cc19..a74ce6c 100644 --- a/spec/lib/diaspora_federation/entities/signed_retraction_spec.rb +++ b/spec/lib/diaspora_federation/entities/signed_retraction_spec.rb @@ -9,7 +9,7 @@ module DiasporaFederation target_guid: target.guid, target_type: target.entity_type, target: target_entity - ).send(:xml_elements).merge(target: target_entity) + ).send(:enriched_properties).merge(target: target_entity) } let(:xml) { <<-XML }