class Openapi3Parser::NodeFactory::PathItem

Private Instance Methods

build_object(data, node_context) click to toggle source
# File lib/openapi3_parser/node_factory/path_item.rb, line 25
def build_object(data, node_context)
  ref = data.delete("$ref")
  context = if node_context.input.keys == %w[$ref]
              referenced_factory = ref.node_factory.referenced_factory
              Node::Context.resolved_reference(
                node_context,
                referenced_factory.context
              )
            else
              node_context
            end

  reference_data = ref.nil_input? ? {} : ref.node.node_data

  data = merge_data(reference_data, data).tap do |d|
    d["servers"] = root_server_data(context) if d["servers"].node.empty?
  end

  Node::PathItem.new(data, context)
end
build_resolved_input() click to toggle source
# File lib/openapi3_parser/node_factory/path_item.rb, line 61
def build_resolved_input
  ref = data["$ref"]
  data_without_ref = super.tap { |d| d.delete("$ref") }
  return data_without_ref unless ref

  merge_data(ref.resolved_input || {}, data_without_ref)
end
merge_data(base, priority) click to toggle source
# File lib/openapi3_parser/node_factory/path_item.rb, line 69
def merge_data(base, priority)
  base.merge(priority) do |_, old, new|
    if new.nil? || new.respond_to?(:nil_input?) && new.nil_input?
      old
    else
      new
    end
  end
end
operation_factory(context) click to toggle source
# File lib/openapi3_parser/node_factory/path_item.rb, line 50
def operation_factory(context)
  NodeFactory::Operation.new(context)
end
parameters_factory(context) click to toggle source
# File lib/openapi3_parser/node_factory/path_item.rb, line 79
def parameters_factory(context)
  factory = NodeFactory::OptionalReference.new(NodeFactory::Parameter)

  validate_parameters = lambda do |validatable|
    validatable.add_error(
      Validators::DuplicateParameters.call(
        validatable.factory.resolved_input
      )
    )
  end

  NodeFactory::Array.new(context,
                         value_factory: factory,
                         validate: validate_parameters)
end
ref_factory(context) click to toggle source
# File lib/openapi3_parser/node_factory/path_item.rb, line 46
def ref_factory(context)
  NodeFactory::Fields::Reference.new(context, self.class)
end
root_server_data(node_context) click to toggle source
# File lib/openapi3_parser/node_factory/path_item.rb, line 95
def root_server_data(node_context)
  root_servers = node_context.document.root.node_data["servers"]
  Node::Placeholder.new(root_servers.node_factory,
                        "servers",
                        node_context)
end
servers_factory(context) click to toggle source
# File lib/openapi3_parser/node_factory/path_item.rb, line 54
def servers_factory(context)
  NodeFactory::Array.new(
    context,
    value_factory: NodeFactory::Server
  )
end