commit: 42eeecba3f334227c10533a065e238f51f6dee4c
parent: c967802c4351f34d5c62e52b72c7d5c2d72ffba3
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Wed, 24 Feb 2016 18:50:16 +0100
Service to reblog statuses
Diffstat:
2 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb
@@ -1,4 +1,9 @@
class PostStatusService < BaseService
+ # Post a text status update, fetch and notify remote users mentioned
+ # @param [Account] account Account from which to post
+ # @param [String] text Message
+ # @param [Status] in_reply_to Optional status to reply to
+ # @return [Status]
def call(account, text, in_reply_to = nil)
status = account.statuses.create!(text: text, thread: in_reply_to)
@@ -14,6 +19,8 @@ class PostStatusService < BaseService
next if mentioned_account.local?
send_interaction_service.(status.stream_entry, mentioned_account)
end
+
+ status
end
private
diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb
@@ -0,0 +1,18 @@
+class ReblogService < BaseService
+ # Reblog a status and notify its remote author
+ # @param [Account] account Account to reblog from
+ # @param [Status] reblogged_status Status to be reblogged
+ # @return [Status]
+ def call(account, reblogged_status)
+ reblog = account.statuses.create!(reblog: reblogged_status, text: '')
+ return reblog if reblogged_status.local?
+ send_interaction_service.(reblog.stream_entry, reblogged_status.account)
+ reblog
+ end
+
+ private
+
+ def send_interaction_service
+ @send_interaction_service ||= SendInteractionService.new
+ end
+end