class Openapi3Parser::SourceInput::ResolveNext

Attributes

base_url[R]
current_source_input[R]
reference[R]
working_directory[R]

Public Class Methods

call(reference, current_source_input, base_url: nil, working_directory: nil) click to toggle source

@param reference [Source::Reference] @param current_source_input [SourceInput] @param base_url [String, nil] @param working_directory [String, nil] @return [SourceInput]

# File lib/openapi3_parser/source_input/resolve_next.rb, line 11
def self.call(reference,
              current_source_input,
              base_url: nil,
              working_directory: nil)
  new(reference, current_source_input, base_url, working_directory)
    .source_input
end

Private Class Methods

new(reference, current_source_input, base_url, working_directory) click to toggle source
# File lib/openapi3_parser/source_input/resolve_next.rb, line 19
def initialize(reference,
               current_source_input,
               base_url,
               working_directory)
  @reference = reference
  @current_source_input = current_source_input
  @base_url = base_url
  @working_directory = working_directory
end

Public Instance Methods

source_input() click to toggle source
# File lib/openapi3_parser/source_input/resolve_next.rb, line 31
def source_input
  return current_source_input if reference.only_fragment?

  if reference.absolute?
    SourceInput::Url.new(reference.resource_uri)
  else
    base_url ? url_source_input : file_source_input
  end
end

Private Instance Methods

file_source_input() click to toggle source
# File lib/openapi3_parser/source_input/resolve_next.rb, line 51
def file_source_input
  path = reference.resource_uri.path
  return SourceInput::File.new(path) if path[0] == "/"

  expanded_path = ::File.expand_path(path, working_directory)
  SourceInput::File.new(expanded_path)
end
url_source_input() click to toggle source
# File lib/openapi3_parser/source_input/resolve_next.rb, line 46
def url_source_input
  url = URI.join(base_url, reference.resource_uri)
  SourceInput::Url.new(url)
end