diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-02-24 18:50:16 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-02-24 18:50:16 +0100 |
commit | 42eeecba3f334227c10533a065e238f51f6dee4c (patch) | |
tree | 4268aaaceac6db4db6cf2e4aa79743ed4fea4638 /app | |
parent | c967802c4351f34d5c62e52b72c7d5c2d72ffba3 (diff) |
Service to reblog statuses
Diffstat (limited to 'app')
-rw-r--r-- | app/services/post_status_service.rb | 7 | ||||
-rw-r--r-- | app/services/reblog_service.rb | 18 |
2 files changed, 25 insertions, 0 deletions
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index 39bbe9f9e..3150a0bad 100644 --- 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 new file mode 100644 index 000000000..000ed8ee6 --- /dev/null +++ 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 |