openapi_parser 0.4.1 → 0.5.0
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 +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
|