Class: Skooma::Objects::Operation::Keywords::Parameters
- Inherits:
-
JSONSkooma::Keywords::Base
- Object
- JSONSkooma::Keywords::Base
- Skooma::Objects::Operation::Keywords::Parameters
- Defined in:
- lib/skooma/objects/operation/keywords/parameters.rb
Instance Method Summary collapse
- #evaluate(instance, result) ⇒ Object
-
#initialize(parent_schema, value) ⇒ Parameters
constructor
A new instance of Parameters.
Constructor Details
#initialize(parent_schema, value) ⇒ Parameters
Returns a new instance of Parameters.
12 13 14 15 16 17 18 19 20 |
# File 'lib/skooma/objects/operation/keywords/parameters.rb', line 12 def initialize(parent_schema, value) super keys = json.filter_map { |v| v["in"] && [v["in"].value, v["name"].value] } parent_params = parent_schema.parent["parameters"] || [] parent_params.reject! do |v| v["in"] && keys.include?([v["in"].value, v["name"].value]) end @parent_params = parent_params end |
Instance Method Details
#evaluate(instance, result) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/skooma/objects/operation/keywords/parameters.rb', line 22 def evaluate(instance, result) return result.discard unless instance.key?("request") return result.discard if json&.value&.empty? && @parent_params.empty? errors = [] process_parameter(json, instance, result) do |subresult| errors << [subresult.schema_node["in"], subresult.schema_node["name"]] unless subresult.passed? end process_parameter(@parent_params, instance, result.parent.sibling(instance, "parameters")) do |subresult| key = [subresult.schema_node["in"], subresult.schema_node["name"]] errors << key unless subresult.passed? end return if errors.empty? result.failure("The following parameters are invalid: #{errors}") end |