commit: 7d4f4f9aab7253540a69d2e80ba5414ae57a6582
parent: 256c2b1de05e5c622ab914f6f353ed0a94d2faaa
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Thu, 4 Jan 2018 04:56:04 +0100
Fix FetchAtomService not finding alternatives if there's a Link header (#6170)
without them, such as is the case with GNU social
Fixes the ability to find GNU social accounts via URL in search and
when using remote follow function
Diffstat:
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/app/services/fetch_atom_service.rb b/app/services/fetch_atom_service.rb
@@ -50,7 +50,7 @@ class FetchAtomService < BaseService
@unsupported_activity = true
nil
end
- elsif @response['Link'] && !terminal
+ elsif @response['Link'] && !terminal && link_header.find_link(%w(rel alternate))
process_headers
elsif @response.mime_type == 'text/html' && !terminal
process_html
@@ -70,8 +70,6 @@ class FetchAtomService < BaseService
end
def process_headers
- link_header = LinkHeader.parse(@response['Link'].is_a?(Array) ? @response['Link'].first : @response['Link'])
-
json_link = link_header.find_link(%w(rel alternate), %w(type application/activity+json)) || link_header.find_link(%w(rel alternate), ['type', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'])
atom_link = link_header.find_link(%w(rel alternate), %w(type application/atom+xml))
@@ -80,4 +78,8 @@ class FetchAtomService < BaseService
result
end
+
+ def link_header
+ @link_header ||= LinkHeader.parse(@response['Link'].is_a?(Array) ? @response['Link'].first : @response['Link'])
+ end
end