class Openapi3Parser::SourceInput::Url

An input of a URL to an OpenAPI file

@attr_reader [String] request_url The URL that will be requested @attr_reader [String] resolved_url The eventual URL of the file that was

accessed, this may differ to the
request_url in the case of redirects

Attributes

request_url[R]
resolved_url[R]

Public Class Methods

new(request_url) click to toggle source

@param [String, URI] request_url

Calls superclass method Openapi3Parser::SourceInput::new
# File lib/openapi3_parser/source_input/url.rb, line 18
def initialize(request_url)
  @request_url = request_url.to_s
  super()
end

Public Instance Methods

==(other) click to toggle source

@see SourceInput#other @param [SourceInput] other @return [Boolean]

# File lib/openapi3_parser/source_input/url.rb, line 33
def ==(other)
  return false unless other.instance_of?(self.class)

  [request_url, resolved_url].include?(other.request_url) ||
    [request_url, resolved_url].include?(other.resolved_url)
end
inspect() click to toggle source

return [String]

# File lib/openapi3_parser/source_input/url.rb, line 46
def inspect
  %{#{self.class.name}(url: #{url})}
end
relative_to(source_input) click to toggle source

@return [String]

# File lib/openapi3_parser/source_input/url.rb, line 56
def relative_to(source_input)
  other_url = if source_input.respond_to?(:url)
                source_input.url
              elsif source_input.respond_to?(:base_url)
                source_input.base_url
              end

  return url unless other_url

  other_url ? RelativeUrlDifference.call(other_url, url) : url
end
resolve_next(reference) click to toggle source

@see SourceInput#resolve_next @param [Source::Reference] reference @return [SourceInput]

# File lib/openapi3_parser/source_input/url.rb, line 26
def resolve_next(reference)
  ResolveNext.call(reference, self, base_url: resolved_url)
end
to_s() click to toggle source

@return [String]

# File lib/openapi3_parser/source_input/url.rb, line 51
def to_s
  request_url
end
url() click to toggle source

return [String]

# File lib/openapi3_parser/source_input/url.rb, line 41
def url
  resolved_url || request_url
end

Private Instance Methods

parse_contents() click to toggle source
# File lib/openapi3_parser/source_input/url.rb, line 70
def parse_contents
  begin
    file = URI.parse(request_url).open
  rescue ::StandardError => e
    @access_error = Error::InaccessibleInput.new(e.message)
    return
  end
  @resolved_url = file.base_uri.to_s
  StringParser.call(file.read, resolved_url)
end