Introduce the "Relayable" entity, which encapsulates common

properties of entities that are inherited from Relayable class
in the Diaspora source code - "parent_guid",
"parent_author_signature", "author_signature".
This commit is contained in:
cmrd Senya 2015-11-13 16:43:36 +03:00
parent 03f10b6a03
commit fd1f896d17
10 changed files with 34 additions and 53 deletions

View file

@ -8,6 +8,7 @@ module DiasporaFederation
end
end
require "diaspora_federation/entities/relayable"
require "diaspora_federation/entities/profile"
require "diaspora_federation/entities/person"
require "diaspora_federation/entities/location"

View file

@ -2,9 +2,7 @@ module DiasporaFederation
module Entities
class Comment < Entity
property :guid
property :parent_guid
property :parent_author_signature
property :author_signature
include Relayable
property :text
property :diaspora_id, xml_name: :diaspora_handle
end

View file

@ -4,9 +4,7 @@ module DiasporaFederation
property :positive
property :guid
property :target_type
property :parent_guid
property :parent_author_signature
property :author_signature
include Relayable
property :diaspora_id, xml_name: :diaspora_handle
end
end

View file

@ -2,9 +2,7 @@ module DiasporaFederation
module Entities
class Message < Entity
property :guid
property :parent_guid
property :parent_author_signature
property :author_signature
include Relayable
property :text
property :created_at, default: -> { Time.now.utc }
property :diaspora_id, xml_name: :diaspora_handle

View file

@ -3,9 +3,7 @@ module DiasporaFederation
class Participation < Entity
property :guid
property :target_type
property :parent_guid
property :parent_author_signature
property :author_signature
include Relayable
property :diaspora_id, xml_name: :diaspora_handle
end
end

View file

@ -2,8 +2,7 @@ module DiasporaFederation
module Entities
class PollParticipation < Entity
property :guid
property :parent_guid
property :parent_author_signature
include Relayable
property :diaspora_id, xml_name: :diaspora_handle
property :poll_answer_guid
end

View file

@ -0,0 +1,13 @@
module DiasporaFederation
module Entities
module Relayable
def self.included(model)
model.class_eval do
property :parent_guid
property :parent_author_signature
property :author_signature
end
end
end
end
end

View file

@ -93,15 +93,18 @@ FactoryGirl.define do
width 800
end
factory :participation_entity, class: DiasporaFederation::Entities::Participation do
guid
target_type "StatusMessage"
factory :relayable_entity, class: DiasporaFederation::Entities::Relayable do
parent_guid { generate(:guid) }
diaspora_id
parent_author_signature { generate(:signature) }
author_signature { generate(:signature) }
end
factory :participation_entity, class: DiasporaFederation::Entities::Participation, parent: :relayable_entity do
guid
target_type "StatusMessage"
diaspora_id
end
factory :status_message_entity, class: DiasporaFederation::Entities::StatusMessage do
raw_message "i am a very interesting status update"
guid
@ -115,22 +118,16 @@ FactoryGirl.define do
recipient_id { generate(:diaspora_id) }
end
factory :comment_entity, class: DiasporaFederation::Entities::Comment do
factory :comment_entity, class: DiasporaFederation::Entities::Comment, parent: :relayable_entity do
guid
parent_guid { generate(:guid) }
parent_author_signature { generate(:signature) }
author_signature { generate(:signature) }
text "this is a very informative comment"
diaspora_id
end
factory :like_entity, class: DiasporaFederation::Entities::Like do
factory :like_entity, class: DiasporaFederation::Entities::Like, parent: :relayable_entity do
positive 1
guid
target_type "StatusMessage"
parent_guid { generate(:guid) }
parent_author_signature { generate(:signature) }
author_signature { generate(:signature) }
diaspora_id
end
@ -147,11 +144,8 @@ FactoryGirl.define do
participant_ids { 3.times.map { generate(:diaspora_id) }.join(";") }
end
factory :message_entity, class: DiasporaFederation::Entities::Message do
factory :message_entity, class: DiasporaFederation::Entities::Message, parent: :relayable_entity do
guid
parent_guid { generate(:guid) }
parent_author_signature { generate(:signature) }
author_signature { generate(:signature) }
text "this is a very informative text"
created_at { DateTime.now.utc }
diaspora_id
@ -200,11 +194,11 @@ FactoryGirl.define do
poll_answers { 3.times.map { FactoryGirl.build(:poll_answer_entity) } }
end
factory :poll_participation_entity, class: DiasporaFederation::Entities::PollParticipation do
factory :poll_participation_entity,
class: DiasporaFederation::Entities::PollParticipation,
parent: :relayable_entity do
guid
parent_guid { generate(:guid) }
diaspora_id
parent_author_signature { generate(:signature) }
poll_answer_guid { generate(:guid) }
end
end

View file

@ -15,26 +15,7 @@ module DiasporaFederation
<guid>#{data[:guid]}</guid>
<subject>#{data[:subject]}</subject>
<created_at>#{data[:created_at]}</created_at>
<message>
<guid>#{msg1.guid}</guid>
<parent_guid>#{msg1.parent_guid}</parent_guid>
<parent_author_signature>#{msg1.parent_author_signature}</parent_author_signature>
<author_signature>#{msg1.author_signature}</author_signature>
<text>#{msg1.text}</text>
<created_at>#{msg1.created_at}</created_at>
<diaspora_handle>#{msg1.diaspora_id}</diaspora_handle>
<conversation_guid>#{msg1.conversation_guid}</conversation_guid>
</message>
<message>
<guid>#{msg2.guid}</guid>
<parent_guid>#{msg2.parent_guid}</parent_guid>
<parent_author_signature>#{msg2.parent_author_signature}</parent_author_signature>
<author_signature>#{msg2.author_signature}</author_signature>
<text>#{msg2.text}</text>
<created_at>#{msg2.created_at}</created_at>
<diaspora_handle>#{msg2.diaspora_id}</diaspora_handle>
<conversation_guid>#{msg2.conversation_guid}</conversation_guid>
</message>
#{data[:messages].map {|a| a.to_xml.to_s.indent(2) }.join("\n")}
<diaspora_handle>#{data[:diaspora_id]}</diaspora_handle>
<participant_handles>#{data[:participant_ids]}</participant_handles>
</conversation>

View file

@ -8,6 +8,7 @@ module DiasporaFederation
<guid>#{data[:guid]}</guid>
<parent_guid>#{data[:parent_guid]}</parent_guid>
<parent_author_signature>#{data[:parent_author_signature]}</parent_author_signature>
<author_signature>#{data[:author_signature]}</author_signature>
<diaspora_handle>#{data[:diaspora_id]}</diaspora_handle>
<poll_answer_guid>#{data[:poll_answer_guid]}</poll_answer_guid>
</poll_participation>