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
-
.group(params, logger: JekyllOpenAPI.logger) ⇒ Hash{String => Array<Hash>}
Groups a parameter list by location ("in").
-
.mapping?(param) ⇒ Boolean
A parameter may arrive inline (Hash) or as a $ref (Reference).
-
.merge(path_params, operation_params) ⇒ Array<Hash>
Merges path-item level and operation level parameter lists.
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.
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/jekyll_openapi/parameters.rb', line 21 def self.group(params, logger: JekyllOpenAPI.logger) output = LOCATIONS.to_h { |location| [location, []] } Array(params).each do |param| location = mapping?(param) ? 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 |
.mapping?(param) ⇒ Boolean
A parameter may arrive inline (Hash) or as a $ref (Reference). Both read like a mapping, so both are valid parameter objects here.
12 13 14 |
# File 'lib/jekyll_openapi/parameters.rb', line 12 def self.mapping?(param) param.is_a?(Hash) || param.is_a?(Reference) 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.
38 39 40 41 42 43 44 45 |
# File 'lib/jekyll_openapi/parameters.rb', line 38 def self.merge(path_params, operation_params) merged = {} (Array(path_params) + Array(operation_params)).each do |param| next unless mapping?(param) merged[[param["name"], param["in"]]] = param end merged.values end |