about summary refs log tree commit diff
path: root/app/services
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-08-21 01:14:40 +0200
committerGitHub <noreply@github.com>2017-08-21 01:14:40 +0200
commit6e9eda53319bc970b085c7c55277981320b2a835 (patch)
tree443d418cf97adb66b330a8c6f2a809583db8b756 /app/services
parent4c23544714c05258af8feab50da243039ddbefb6 (diff)
ActivityPub migration procedure (#4617)
* ActivityPub migration procedure

Once one account is detected as going from OStatus to ActivityPub,
invalidate WebFinger cache for other accounts from the same domain

* Unsubscribe from PuSH updates once we receive an ActivityPub payload

* Re-subscribe to PuSH unless already unsubscribed, regardless of protocol
Diffstat (limited to 'app/services')
-rw-r--r--app/services/activitypub/process_account_service.rb8
-rw-r--r--app/services/unsubscribe_service.rb2
2 files changed, 8 insertions, 2 deletions
diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb
index 9fb7ebf9e..2f2dfd330 100644
--- a/app/services/activitypub/process_account_service.rb
+++ b/app/services/activitypub/process_account_service.rb
@@ -12,7 +12,8 @@ class ActivityPub::ProcessAccountService < BaseService
     @domain   = domain
     @account  = Account.find_by(uri: @uri)
 
-    create_account if @account.nil?
+    create_account  if @account.nil?
+    upgrade_account if @account.ostatus?
     update_account
 
     @account
@@ -24,6 +25,7 @@ class ActivityPub::ProcessAccountService < BaseService
 
   def create_account
     @account = Account.new
+    @account.protocol    = :activitypub
     @account.username    = @username
     @account.domain      = @domain
     @account.uri         = @uri
@@ -50,6 +52,10 @@ class ActivityPub::ProcessAccountService < BaseService
     @account.save!
   end
 
+  def upgrade_account
+    ActivityPub::PostUpgradeWorker.perform_async(@account.domain)
+  end
+
   def image_url(key)
     value = first_of_value(@json[key])
 
diff --git a/app/services/unsubscribe_service.rb b/app/services/unsubscribe_service.rb
index c5e0e73fe..865f783bc 100644
--- a/app/services/unsubscribe_service.rb
+++ b/app/services/unsubscribe_service.rb
@@ -2,7 +2,7 @@
 
 class UnsubscribeService < BaseService
   def call(account)
-    return unless account.ostatus?
+    return if account.hub_url.blank?
 
     @account  = account
     @response = build_request.perform