commit: 10eb47a33e2f0c7f0eba5302319c4321db41294c
parent: 784b9cca6ae490216f45e55786b96c5e03257373
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Wed, 24 Feb 2016 03:05:40 +0100
Do not PuSH-subscribe to remote accounts when creating them for salmon
Diffstat:
3 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/app/services/follow_remote_account_service.rb b/app/services/follow_remote_account_service.rb
@@ -1,7 +1,7 @@
class FollowRemoteAccountService
include ApplicationHelper
- def call(uri)
+ def call(uri, subscribe = true)
username, domain = uri.split('@')
account = Account.where(username: username, domain: domain).first
@@ -19,9 +19,6 @@ class FollowRemoteAccountService
account.public_key = magic_key_to_pem(data.link('magic-public-key').href)
account.private_key = nil
- account.secret = SecureRandom.hex
- account.verify_token = SecureRandom.hex
-
feed = get_feed(account.remote_url)
hubs = feed.xpath('//xmlns:link[@rel="hub"]')
@@ -33,8 +30,15 @@ class FollowRemoteAccountService
get_profile(feed, account)
account.save!
- subscription = account.subscription(subscription_url(account))
- subscription.subscribe
+ if subscribe
+ account.secret = SecureRandom.hex
+ account.verify_token = SecureRandom.hex
+
+ subscription = account.subscription(subscription_url(account))
+ subscription.subscribe
+
+ account.save!
+ end
return account
rescue Goldfinger::Error, HTTP::Error => e
diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb
@@ -31,10 +31,12 @@ class ProcessFeedService
def add_reblog!(entry, status)
status.reblog = find_original_status(entry, target_id(entry))
+ status.save! unless status.reblog.nil?
end
def add_reply!(entry, status)
status.thread = find_original_status(entry, thread_id(entry))
+ status.save! unless status.thread.nil?
end
def find_original_status(xml, id)
@@ -54,7 +56,8 @@ class ProcessFeedService
end
def fetch_remote_status(xml, id)
- # todo
+ url = xml.at_xpath('./link[@rel="self"]').attribute('href').value
+ nil
end
def local_id?(id)
@@ -100,4 +103,8 @@ class ProcessFeedService
rescue
:post
end
+
+ def follow_remote_account_service
+ FollowRemoteAccountService.new
+ end
end
diff --git a/app/services/process_interaction_service.rb b/app/services/process_interaction_service.rb
@@ -13,7 +13,7 @@ class ProcessInteractionService
account = Account.find_by(username: username, domain: domain)
if account.nil?
- account = follow_remote_account_service.("acct:#{username}@#{domain}")
+ account = follow_remote_account_service.("acct:#{username}@#{domain}", false)
return if account.nil?
end