class Openapi3Parser::Validators::DuplicateParameters

Public Class Methods

call(resolved_input) click to toggle source
# File lib/openapi3_parser/validators/duplicate_parameters.rb, line 6
def self.call(resolved_input)
  new.call(resolved_input)
end

Public Instance Methods

call(resolved_input) click to toggle source
# File lib/openapi3_parser/validators/duplicate_parameters.rb, line 10
def call(resolved_input)
  dupes = duplicate_names_by_in(resolved_input)
  message(dupes) unless dupes.empty?
end

Private Instance Methods

duplicate_names_by_in(resolved_input) click to toggle source
# File lib/openapi3_parser/validators/duplicate_parameters.rb, line 17
def duplicate_names_by_in(resolved_input)
  potential_items = resolved_input.reject do |item|
    next true unless item.respond_to?(:keys)

    item["name"].nil? || item["in"].nil?
  end

  potential_items.group_by { |item| [item["name"], item["in"]] }
                 .delete_if { |_, group| group.size < 2 }
                 .keys
end
message(dupes) click to toggle source
# File lib/openapi3_parser/validators/duplicate_parameters.rb, line 29
def message(dupes)
  grouped = dupes.map { |d| "#{d.first} in #{d.last}" }.join(", ")
  "Duplicate parameters: #{grouped}"
end