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
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)
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