Add nodeinfo 2.1 support

This commit is contained in:
KMY 2023-08-05 09:25:40 +09:00
parent cd94790633
commit b5949f8e48

View file

@ -10,6 +10,8 @@ class FetchInstanceInfoWorker
class GoneError < Error; end class GoneError < Error; end
class RequestError < Error; end class RequestError < Error; end
SUPPORTED_NOTEINFO_RELS = ['http://nodeinfo.diaspora.software/ns/schema/2.0', 'http://nodeinfo.diaspora.software/ns/schema/2.1'].freeze
def perform(domain) def perform(domain)
@instance = Instance.find_by(domain: domain) @instance = Instance.find_by(domain: domain)
return if !@instance || @instance.unavailable_domain.present? return if !@instance || @instance.unavailable_domain.present?
@ -31,7 +33,7 @@ class FetchInstanceInfoWorker
nodeinfo_links = nodeinfo['links'] nodeinfo_links = nodeinfo['links']
return nil if !nodeinfo_links.is_a?(Array) || nodeinfo_links.blank? return nil if !nodeinfo_links.is_a?(Array) || nodeinfo_links.blank?
nodeinfo_link = nodeinfo_links.find { |item| item.key?('rel') && item.key?('href') && item['rel'] == 'http://nodeinfo.diaspora.software/ns/schema/2.0' } nodeinfo_link = nodeinfo_links.find { |item| item.key?('rel') && item.key?('href') && SUPPORTED_NOTEINFO_RELS.include?(item['rel']) }
return nil if nodeinfo_link.nil? || nodeinfo_link['href'].nil? || !nodeinfo_link['href'].start_with?('http') return nil if nodeinfo_link.nil? || nodeinfo_link['href'].nil? || !nodeinfo_link['href'].start_with?('http')
nodeinfo_link['href'] nodeinfo_link['href']