Fix error caused by missing subject in Webfinger response (#18204)
This commit is contained in:
		@@ -6,8 +6,13 @@ class Webfinger
 | 
			
		||||
  class RedirectError < StandardError; end
 | 
			
		||||
 | 
			
		||||
  class Response
 | 
			
		||||
    def initialize(body)
 | 
			
		||||
    attr_reader :uri
 | 
			
		||||
 | 
			
		||||
    def initialize(uri, body)
 | 
			
		||||
      @uri  = uri
 | 
			
		||||
      @json = Oj.load(body, mode: :strict)
 | 
			
		||||
 | 
			
		||||
      validate_response!
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def subject
 | 
			
		||||
@@ -23,6 +28,10 @@ class Webfinger
 | 
			
		||||
    def links
 | 
			
		||||
      @links ||= @json['links'].index_by { |link| link['rel'] }
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def validate_response!
 | 
			
		||||
      raise Webfinger::Error, "Missing subject in response for #{@uri}" if subject.blank?
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def initialize(uri)
 | 
			
		||||
@@ -34,7 +43,7 @@ class Webfinger
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def perform
 | 
			
		||||
    Response.new(body_from_webfinger)
 | 
			
		||||
    Response.new(@uri, body_from_webfinger)
 | 
			
		||||
  rescue Oj::ParseError
 | 
			
		||||
    raise Webfinger::Error, "Invalid JSON in response for #{@uri}"
 | 
			
		||||
  rescue Addressable::URI::InvalidURIError
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user