This commit is contained in:
		| @ -1,7 +1,7 @@ | ||||
| # frozen_string_literal: true | ||||
|  | ||||
| module AuthorExtractor | ||||
|   def author_from_xml(xml) | ||||
|   def author_from_xml(xml, update_profile = true) | ||||
|     return nil if xml.nil? | ||||
|  | ||||
|     # Try <email> for acct | ||||
| @ -18,6 +18,6 @@ module AuthorExtractor | ||||
|       acct   = "#{username}@#{domain}" | ||||
|     end | ||||
|  | ||||
|     FollowRemoteAccountService.new.call(acct) | ||||
|     FollowRemoteAccountService.new.call(acct, update_profile) | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -21,7 +21,7 @@ class FetchRemoteAccountService < BaseService | ||||
|     xml = Nokogiri::XML(body) | ||||
|     xml.encoding = 'utf-8' | ||||
|  | ||||
|     account = author_from_xml(xml.at_xpath('/xmlns:feed', xmlns: TagManager::XMLNS)) | ||||
|     account = author_from_xml(xml.at_xpath('/xmlns:feed', xmlns: TagManager::XMLNS), false) | ||||
|  | ||||
|     UpdateRemoteProfileService.new.call(xml, account) unless account.nil? | ||||
|  | ||||
|  | ||||
| @ -11,7 +11,7 @@ class FollowRemoteAccountService < BaseService | ||||
|   # important information from their feed | ||||
|   # @param [String] uri User URI in the form of username@domain | ||||
|   # @return [Account] | ||||
|   def call(uri, redirected = nil) | ||||
|   def call(uri, update_profile = true, redirected = nil) | ||||
|     username, domain = uri.split('@') | ||||
|  | ||||
|     return Account.find_local(username) if TagManager.instance.local_domain?(domain) | ||||
| @ -29,7 +29,7 @@ class FollowRemoteAccountService < BaseService | ||||
|     confirmed_username, confirmed_domain = data.subject.gsub(/\Aacct:/, '').split('@') | ||||
|  | ||||
|     unless confirmed_username.casecmp(username).zero? && confirmed_domain.casecmp(domain).zero? | ||||
|       return call("#{confirmed_username}@#{confirmed_domain}", true) if redirected.nil? | ||||
|       return call("#{confirmed_username}@#{confirmed_domain}", update_profile, true) if redirected.nil? | ||||
|       raise Goldfinger::Error, 'Requested and returned acct URI do not match' | ||||
|     end | ||||
|  | ||||
| @ -63,7 +63,7 @@ class FollowRemoteAccountService < BaseService | ||||
|  | ||||
|     begin | ||||
|       account.save! | ||||
|       get_profile(body, account) | ||||
|       get_profile(body, account) if update_profile | ||||
|     rescue ActiveRecord::RecordNotUnique | ||||
|       # The account has been added by another worker! | ||||
|       return Account.find_remote(confirmed_username, confirmed_domain) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user