about summary refs log tree commit diff
path: root/app/services/reblog_service.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2016-02-24 18:50:16 +0100
committerEugen Rochko <eugen@zeonfederated.com>2016-02-24 18:50:16 +0100
commit42eeecba3f334227c10533a065e238f51f6dee4c (patch)
tree4268aaaceac6db4db6cf2e4aa79743ed4fea4638 /app/services/reblog_service.rb
parentc967802c4351f34d5c62e52b72c7d5c2d72ffba3 (diff)
Service to reblog statuses
Diffstat (limited to 'app/services/reblog_service.rb')
-rw-r--r--app/services/reblog_service.rb18
1 files changed, 18 insertions, 0 deletions
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