about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2016-02-28 14:33:13 +0100
committerEugen Rochko <eugen@zeonfederated.com>2016-02-28 14:33:13 +0100
commit8fada4fae25592e24f709faff41b0dedf6d5e36f (patch)
tree93f79243995ea3c01d9f1979c1b587f938ff2ed3
parentad5ae3f60e5e0745912bfbc0926f6cf8bc6e9eb4 (diff)
When posting a status or reblogging one, ping hubs about the feed update
-rw-r--r--app/models/account.rb5
-rw-r--r--app/services/post_status_service.rb1
-rw-r--r--app/services/reblog_service.rb1
-rw-r--r--spec/models/account_spec.rb4
4 files changed, 11 insertions, 0 deletions
diff --git a/app/models/account.rb b/app/models/account.rb
index f1ac6fdd7..e9fc03a10 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -65,6 +65,11 @@ class Account < ActiveRecord::Base
     @subscription ||= OStatus2::Subscription.new(self.remote_url, secret: self.secret, token: self.verify_token, webhook: webhook_url, hub: self.hub_url)
   end
 
+  def ping!(atom_url, hubs)
+    return unless local?
+    OStatus2::Publication.new(atom_url, hubs).publish
+  end
+
   def avatar_remote_url=(url)
     self.avatar = URI.parse(url)
     @avatar_remote_url = url
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb
index 17cc8e323..64519a400 100644
--- a/app/services/post_status_service.rb
+++ b/app/services/post_status_service.rb
@@ -7,6 +7,7 @@ class PostStatusService < BaseService
   def call(account, text, in_reply_to = nil)
     status = account.statuses.create!(text: text, thread: in_reply_to)
     process_mentions_service.(status)
+    account.ping!(atom_user_stream_url(id: account.id), HUB_URL)
     status
   end
 
diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb
index 000ed8ee6..66b7634fb 100644
--- a/app/services/reblog_service.rb
+++ b/app/services/reblog_service.rb
@@ -5,6 +5,7 @@ class ReblogService < BaseService
   # @return [Status]
   def call(account, reblogged_status)
     reblog = account.statuses.create!(reblog: reblogged_status, text: '')
+    account.ping!(atom_user_stream_url(id: account.id), HUB_URL)
     return reblog if reblogged_status.local?
     send_interaction_service.(reblog.stream_entry, reblogged_status.account)
     reblog
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index a5f24a990..562989335 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -107,4 +107,8 @@ RSpec.describe Account, type: :model do
       expect(subject.content).to eql subject.note
     end
   end
+
+  describe '#ping!' do
+    pending
+  end
 end