Sha256: e82440ed39de73725182636ee2f97c4d20bab72e878bbdc202572a35a41b2ede

Contents?: true

Size: 804 Bytes

Versions: 4

Compression:

Stored size: 804 Bytes

Contents

# frozen_string_literal: true

module Openapi3Parser
  module Validators
    class DuplicateParameters
      def self.call(resolved_input)
        new.call(resolved_input)
      end

      def call(resolved_input)
        dupes = duplicate_names_by_in(resolved_input)
        message(dupes) unless dupes.empty?
      end

      private

      def duplicate_names_by_in(resolved_input)
        resolved_input.reject { |item| item["name"].nil? || item["in"].nil? }
                      .group_by { |item| [item["name"], item["in"]] }
                      .delete_if { |_, group| group.size < 2 }
                      .keys
      end

      def message(dupes)
        grouped = dupes.map { |d| "#{d.first} in #{d.last}" }.join(", ")
        "Duplicate parameters: #{grouped}"
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
openapi3_parser-0.5.2 lib/openapi3_parser/validators/duplicate_parameters.rb
openapi3_parser-0.5.1 lib/openapi3_parser/validators/duplicate_parameters.rb
openapi3_parser-0.5.0 lib/openapi3_parser/validators/duplicate_parameters.rb
openapi3_parser-0.4.0 lib/openapi3_parser/validators/duplicate_parameters.rb