diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-02-28 14:33:13 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-02-28 14:33:13 +0100 |
commit | 8fada4fae25592e24f709faff41b0dedf6d5e36f (patch) | |
tree | 93f79243995ea3c01d9f1979c1b587f938ff2ed3 /app | |
parent | ad5ae3f60e5e0745912bfbc0926f6cf8bc6e9eb4 (diff) |
When posting a status or reblogging one, ping hubs about the feed update
Diffstat (limited to 'app')
-rw-r--r-- | app/models/account.rb | 5 | ||||
-rw-r--r-- | app/services/post_status_service.rb | 1 | ||||
-rw-r--r-- | app/services/reblog_service.rb | 1 |
3 files changed, 7 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 |