Module: JekyllOpenAPI::Parameters

Defined in:
lib/jekyll_openapi/parameters.rb

Overview

Helpers for OpenAPI Parameter objects.

Constant Summary collapse

LOCATIONS =
%w[query path header cookie].freeze

Class Method Summary collapse

Class Method Details

.group(params, logger: JekyllOpenAPI.logger) ⇒ Hash{String => Array<Hash>}

Groups a parameter list by location ("in"). Always returns all four location keys so templates can test emptiness.

Parameters:

  • params (Array<Hash>, nil)

Returns:

  • (Hash{String => Array<Hash>})


13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/jekyll_openapi/parameters.rb', line 13

def self.group(params, logger: JekyllOpenAPI.logger)
  output = LOCATIONS.to_h { |location| [location, []] }
  Array(params).each do |param|
    location = param.is_a?(Hash) ? param["in"] : nil
    if output.key?(location)
      output[location] << param
    else
      logger.warn("invalid parameter location #{location.inspect} in #{param.inspect}")
    end
  end
  output
end

.merge(path_params, operation_params) ⇒ Array<Hash>

Merges path-item level and operation level parameter lists. An operation parameter overrides a path one with the same (name, in) pair.

Returns:

  • (Array<Hash>)


30
31
32
33
34
35
36
37
# File 'lib/jekyll_openapi/parameters.rb', line 30

def self.merge(path_params, operation_params)
  merged = {}
  (Array(path_params) + Array(operation_params)).each do |param|
    next unless param.is_a?(Hash)
    merged[[param["name"], param["in"]]] = param
  end
  merged.values
end