runapi-core 0.2.13 → 0.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54af25cbee562bbd98fffc58f942ef47c0aca7ec192fce354ee838193ddca938
4
- data.tar.gz: 7267f1f89df5153b8f48ba7c16ff638a911447c22bd5c64767e166f24092375e
3
+ metadata.gz: 3c441c1752f41281ef46e89e708570844c321371e91b400879e92c1555038a61
4
+ data.tar.gz: 927b1f5259c7d7e799f1509eb2f0b67ed8635722bbf920c4c49ce67a72f92838
5
5
  SHA512:
6
- metadata.gz: 1b68a3396f9ee702efc8396d5e69e2fb56f83462d38a0fed5eaafd2230c61b93dd68128929ac32d60b1dbe6d716e4381c47d0715ef0aeeb144a9eacd03857f78
7
- data.tar.gz: 68f6599bdb9958021c82a77da85b7f10ef3d1f3779370bc215cbbb89ab1d434762e75b387ea5fdaa456cf600878f7bd14aa6b353f710961a1ad9554b56d83b73
6
+ metadata.gz: 26702004f5ea1b631203123c83353c64ab858c0cc440c2f506717d666574d14d2a284f14bcb1874ecac7fed28a5c8b40bdd14425e25e31948c380a99c6f7515e
7
+ data.tar.gz: 87ac2f48d103c696e196a9bbc00ba56cdf2d87322aebcb4453dae655db9ef89bfe3fa116a21127e4b5188823facb4ae838add55686a4c45950463dda5e23313f
@@ -70,11 +70,15 @@ module RunApi
70
70
  end
71
71
 
72
72
  def validate_schema_field!(params, field, rules)
73
+ value = param_value(params, field)
74
+ if !value.nil? && (rules.key?("min_items") || rules.key?("max_items"))
75
+ validate_schema_item_count!(field, value, rules)
76
+ end
77
+
73
78
  present = field_present?(params, field)
74
79
  raise Core::ValidationError, "#{field} is required" if rules["required"] && !present
75
80
  return unless present
76
81
 
77
- value = param_value(params, field)
78
82
  if (enum = rules["enum"]) && !enum_value_allowed?(enum, value)
79
83
  raise Core::ValidationError, "#{field} must be one of: #{enum.join(", ")}"
80
84
  end
@@ -83,6 +87,26 @@ module RunApi
83
87
  validate_schema_range!(field, value, rules) if rules.key?("min") || rules.key?("max")
84
88
  end
85
89
 
90
+ def validate_schema_item_count!(field, value, rules)
91
+ raise Core::ValidationError, "#{field} must be an array" unless value.is_a?(Array)
92
+
93
+ min = rules["min_items"]
94
+ max = rules["max_items"]
95
+ return if (min.nil? || value.size >= min) && (max.nil? || value.size <= max)
96
+
97
+ raise Core::ValidationError, item_count_message(field, min, max)
98
+ end
99
+
100
+ def item_count_message(field, min, max)
101
+ if min && max
102
+ "#{field} must contain between #{min} and #{max} items"
103
+ elsif min
104
+ "#{field} must contain at least #{min} items"
105
+ else
106
+ "#{field} must contain at most #{max} items"
107
+ end
108
+ end
109
+
86
110
  # Mirrors GatewayEntry#validate_schema_integer!: a type: integer field
87
111
  # rejects non-integer numbers (e.g. 11.5), which min/max alone admit.
88
112
  def validate_schema_integer!(field, value, rules)
@@ -2,7 +2,7 @@
2
2
 
3
3
  module RunApi
4
4
  module Core
5
- VERSION = "0.2.13"
5
+ VERSION = "0.2.14"
6
6
  end
7
7
 
8
8
  VERSION = Core::VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runapi-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.13
4
+ version: 0.2.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - RunAPI