openapi_parser 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -1
- data/lib/openapi_parser/errors.rb +44 -0
- data/lib/openapi_parser/schema_validators/array_validator.rb +10 -1
- data/lib/openapi_parser/schema_validators/string_validator.rb +10 -0
- data/lib/openapi_parser/schemas/paths.rb +1 -1
- data/lib/openapi_parser/schemas/responses.rb +1 -1
- data/lib/openapi_parser/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69b353b6b05a25b119a50ef0baf9fe56d749158a18e429e2ed3632effb0c2de7
|
4
|
+
data.tar.gz: e122e4b7942ed9cb53fa70f0a7c9eef316fb6384342a5ff8b66cf9f998f9d95a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0ec9b54da1a51781be3786c6def47e4e673fda8fdf5ad6362813725362c7a0ce9a1464dcee37f9f629f4dab796fa623b8578c7182af9e3e0f28e6257318e03a
|
7
|
+
data.tar.gz: 13effd1bac35ae340f98bd3127569f7bce3184586dc44a109016fc243e867731d6824973f0cc4607cf1095e2e05729f499b5528d108a109b192c7f48c5f9a823
|
data/CHANGELOG.md
CHANGED
@@ -177,4 +177,48 @@ module OpenAPIParser
|
|
177
177
|
"don't exist response definition #{@reference}"
|
178
178
|
end
|
179
179
|
end
|
180
|
+
|
181
|
+
class MoreThanMaxLength < OpenAPIError
|
182
|
+
def initialize(value, reference)
|
183
|
+
super(reference)
|
184
|
+
@value = value
|
185
|
+
end
|
186
|
+
|
187
|
+
def message
|
188
|
+
"#{@value} cannot be more than max length in #{@reference}"
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
class LessThanMinLength < OpenAPIError
|
193
|
+
def initialize(value, reference)
|
194
|
+
super(reference)
|
195
|
+
@value = value
|
196
|
+
end
|
197
|
+
|
198
|
+
def message
|
199
|
+
"#{@value} cannot be less than min length in #{@reference}"
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
class MoreThanMaxItems < OpenAPIError
|
204
|
+
def initialize(value, reference)
|
205
|
+
super(reference)
|
206
|
+
@value = value
|
207
|
+
end
|
208
|
+
|
209
|
+
def message
|
210
|
+
"#{@value} cannot be more than max items in #{@reference}"
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
class LessThanMinItems < OpenAPIError
|
215
|
+
def initialize(value, reference)
|
216
|
+
super(reference)
|
217
|
+
@value = value
|
218
|
+
end
|
219
|
+
|
220
|
+
def message
|
221
|
+
"#{@value} cannot be less than min items in #{@reference}"
|
222
|
+
end
|
223
|
+
end
|
180
224
|
end
|
@@ -5,9 +5,11 @@ class OpenAPIParser::SchemaValidator
|
|
5
5
|
def coerce_and_validate(value, schema, **_keyword_args)
|
6
6
|
return OpenAPIParser::ValidateError.build_error_result(value, schema) unless value.kind_of?(Array)
|
7
7
|
|
8
|
+
value, err = validate_max_min_items(value, schema)
|
9
|
+
return [nil, err] if err
|
10
|
+
|
8
11
|
# array type have an schema in items property
|
9
12
|
items_schema = schema.items
|
10
|
-
|
11
13
|
coerced_values = value.map do |v|
|
12
14
|
coerced, err = validatable.validate_schema(v, items_schema)
|
13
15
|
return [nil, err] if err
|
@@ -19,5 +21,12 @@ class OpenAPIParser::SchemaValidator
|
|
19
21
|
|
20
22
|
[value, nil]
|
21
23
|
end
|
24
|
+
|
25
|
+
def validate_max_min_items(value, schema)
|
26
|
+
return [nil, OpenAPIParser::MoreThanMaxItems.new(value, schema.object_reference)] if schema.maxItems && value.length > schema.maxItems
|
27
|
+
return [nil, OpenAPIParser::LessThanMinItems.new(value, schema.object_reference)] if schema.minItems && value.length < schema.minItems
|
28
|
+
|
29
|
+
[value, nil]
|
30
|
+
end
|
22
31
|
end
|
23
32
|
end
|
@@ -21,6 +21,9 @@ class OpenAPIParser::SchemaValidator
|
|
21
21
|
return [nil, err] if err
|
22
22
|
end
|
23
23
|
|
24
|
+
value, err = validate_max_min_length(value, schema)
|
25
|
+
return [nil, err] if err
|
26
|
+
|
24
27
|
[value, nil]
|
25
28
|
end
|
26
29
|
|
@@ -51,5 +54,12 @@ class OpenAPIParser::SchemaValidator
|
|
51
54
|
|
52
55
|
[nil, OpenAPIParser::InvalidPattern.new(value, schema.pattern, schema.object_reference)]
|
53
56
|
end
|
57
|
+
|
58
|
+
def validate_max_min_length(value, schema)
|
59
|
+
return [nil, OpenAPIParser::MoreThanMaxLength.new(value, schema.object_reference)] if schema.maxLength && value.size > schema.maxLength
|
60
|
+
return [nil, OpenAPIParser::LessThanMinLength.new(value, schema.object_reference)] if schema.minLength && value.size < schema.minLength
|
61
|
+
|
62
|
+
[value, nil]
|
63
|
+
end
|
54
64
|
end
|
55
65
|
end
|
@@ -2,6 +2,6 @@ module OpenAPIParser::Schemas
|
|
2
2
|
class Paths < Base
|
3
3
|
# @!attribute [r] path
|
4
4
|
# @return [Hash{String => PathItem, Reference}, nil]
|
5
|
-
openapi_attr_hash_body_objects 'path', PathItem,
|
5
|
+
openapi_attr_hash_body_objects 'path', PathItem, reference: false, allow_data_type: false
|
6
6
|
end
|
7
7
|
end
|
@@ -8,7 +8,7 @@ module OpenAPIParser::Schemas
|
|
8
8
|
|
9
9
|
# @!attribute [r] response
|
10
10
|
# @return [Hash{String => Response, Reference}, nil] response object indexed by status code. see: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#patterned-fields-1
|
11
|
-
openapi_attr_hash_body_objects 'response', Response, reject_keys: [:default],
|
11
|
+
openapi_attr_hash_body_objects 'response', Response, reject_keys: [:default], reference: true, allow_data_type: false
|
12
12
|
|
13
13
|
# validate params data by definition
|
14
14
|
# find response object by status_code and content_type
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openapi_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ota42y
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|