diff --git a/lib/diaspora_federation/entities/event.rb b/lib/diaspora_federation/entities/event.rb index 1568f0c..0eda632 100644 --- a/lib/diaspora_federation/entities/event.rb +++ b/lib/diaspora_federation/entities/event.rb @@ -24,7 +24,7 @@ module DiasporaFederation # @!attribute [r] description # Description of the event # @return [String] event description - property :description, :string, optional: true + property :description, :string, alias: :text, optional: true # @!attribute [r] start # The start time of the event diff --git a/lib/diaspora_federation/entities/profile.rb b/lib/diaspora_federation/entities/profile.rb index 8fa2736..8caebf7 100644 --- a/lib/diaspora_federation/entities/profile.rb +++ b/lib/diaspora_federation/entities/profile.rb @@ -43,9 +43,12 @@ module DiasporaFederation # @return [String] url to the small avatar (50x50) property :image_url_small, :string, optional: true + # @!attribute [r] bio + # @return [String] bio of the person + property :bio, :string, alias: :text, optional: true + property :birthday, :string, optional: true property :gender, :string, optional: true - property :bio, :string, optional: true property :location, :string, optional: true # @!attribute [r] searchable diff --git a/lib/diaspora_federation/federation/receiver/abstract_receiver.rb b/lib/diaspora_federation/federation/receiver/abstract_receiver.rb index 1d23a1c..d63ba6e 100644 --- a/lib/diaspora_federation/federation/receiver/abstract_receiver.rb +++ b/lib/diaspora_federation/federation/receiver/abstract_receiver.rb @@ -30,6 +30,7 @@ module DiasporaFederation validate DiasporaFederation.callbacks.trigger(:receive_entity, entity, sender, recipient_id) logger.info "successfully received #{entity} from person #{sender}#{" for #{recipient_id}" if recipient_id}" + fetch_linked_entities_from_text end def validate @@ -43,6 +44,10 @@ module DiasporaFederation sender == entity.author end end + + def fetch_linked_entities_from_text + DiasporaUrlParser.fetch_linked_entities(sender, entity.text) if entity.respond_to?(:text) && entity.text + end end end end diff --git a/spec/lib/diaspora_federation/entities/account_migration_spec.rb b/spec/lib/diaspora_federation/entities/account_migration_spec.rb index 928ff8b..debc3d0 100644 --- a/spec/lib/diaspora_federation/entities/account_migration_spec.rb +++ b/spec/lib/diaspora_federation/entities/account_migration_spec.rb @@ -24,9 +24,9 @@ module DiasporaFederation #{data[:profile].image_url} #{data[:profile].image_url} #{data[:profile].image_url} + #{data[:profile].bio} #{data[:profile].birthday} #{data[:profile].gender} - #{data[:profile].bio} #{data[:profile].location} #{data[:profile].searchable} #{data[:profile].public} diff --git a/spec/lib/diaspora_federation/entities/person_spec.rb b/spec/lib/diaspora_federation/entities/person_spec.rb index 435aac6..6344827 100644 --- a/spec/lib/diaspora_federation/entities/person_spec.rb +++ b/spec/lib/diaspora_federation/entities/person_spec.rb @@ -13,9 +13,9 @@ module DiasporaFederation #{data[:profile].image_url} #{data[:profile].image_url} #{data[:profile].image_url} + #{data[:profile].bio} #{data[:profile].birthday} #{data[:profile].gender} - #{data[:profile].bio} #{data[:profile].location} #{data[:profile].searchable} #{data[:profile].public} diff --git a/spec/lib/diaspora_federation/entities/profile_spec.rb b/spec/lib/diaspora_federation/entities/profile_spec.rb index d162556..30b1aa1 100644 --- a/spec/lib/diaspora_federation/entities/profile_spec.rb +++ b/spec/lib/diaspora_federation/entities/profile_spec.rb @@ -9,9 +9,9 @@ module DiasporaFederation #{data[:image_url]} #{data[:image_url]} #{data[:image_url]} + #{data[:bio]} #{data[:birthday]} #{data[:gender]} - #{data[:bio]} #{data[:location]} #{data[:searchable]} #{data[:public]} @@ -29,9 +29,9 @@ XML "image_url": "#{data[:image_url]}", "image_url_medium": "#{data[:image_url]}", "image_url_small": "#{data[:image_url]}", + "bio": "#{data[:bio]}", "birthday": "#{data[:birthday]}", "gender": "#{data[:gender]}", - "bio": "#{data[:bio]}", "location": "#{data[:location]}", "searchable": #{data[:searchable]}, "public": #{data[:public]}, diff --git a/spec/lib/diaspora_federation/federation/receiver/private_spec.rb b/spec/lib/diaspora_federation/federation/receiver/private_spec.rb index 2deda9d..5635e91 100644 --- a/spec/lib/diaspora_federation/federation/receiver/private_spec.rb +++ b/spec/lib/diaspora_federation/federation/receiver/private_spec.rb @@ -112,6 +112,36 @@ module DiasporaFederation end end end + + context "with text" do + before do + expect(DiasporaFederation.callbacks).to receive(:trigger) + end + + it "fetches linked entities when the received entity has a text property" do + expect(Federation::DiasporaUrlParser).to receive(:fetch_linked_entities).with(post.author, post.text) + + described_class.new(magic_env, recipient).receive + end + + it "fetches linked entities for the profile bio" do + profile = Fabricate(:profile_entity) + magic_env = Salmon::MagicEnvelope.new(profile, profile.author) + + expect(Federation::DiasporaUrlParser).to receive(:fetch_linked_entities).with(profile.author, profile.bio) + + described_class.new(magic_env, recipient).receive + end + + it "doesn't try to fetch linked entities when the text is nil" do + photo = Fabricate(:photo_entity, public: false, text: nil) + magic_env = Salmon::MagicEnvelope.new(photo, photo.author) + + expect(Federation::DiasporaUrlParser).not_to receive(:fetch_linked_entities) + + described_class.new(magic_env, recipient).receive + end + end 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 0234487..04f2108 100644 --- a/spec/lib/diaspora_federation/federation/receiver/public_spec.rb +++ b/spec/lib/diaspora_federation/federation/receiver/public_spec.rb @@ -134,6 +134,36 @@ module DiasporaFederation described_class.new(magic_env).receive end end + + context "with text" do + before do + expect(DiasporaFederation.callbacks).to receive(:trigger) + end + + it "fetches linked entities when the received entity has a text property" do + expect(Federation::DiasporaUrlParser).to receive(:fetch_linked_entities).with(post.author, post.text) + + described_class.new(magic_env).receive + end + + it "fetches linked entities for the profile bio" do + profile = Fabricate(:profile_entity, public: true) + magic_env = Salmon::MagicEnvelope.new(profile, profile.author) + + expect(Federation::DiasporaUrlParser).to receive(:fetch_linked_entities).with(profile.author, profile.bio) + + described_class.new(magic_env).receive + end + + it "doesn't try to fetch linked entities when the text is nil" do + photo = Fabricate(:photo_entity, text: nil) + magic_env = Salmon::MagicEnvelope.new(photo, photo.author) + + expect(Federation::DiasporaUrlParser).not_to receive(:fetch_linked_entities) + + described_class.new(magic_env).receive + end + end end end end