openapi_parser 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db2325855cec3fb7ebe98a4e40ee654a16f90fe90120b9f52997165b9ab8bc00
|
4
|
+
data.tar.gz: f2887d474e4e9faba6217a6ee60ac4ad4b88f86b74658c090c5f041537979097
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a4f47f5cdf92e64a93ea49856cdd4ff213522ebc7c1f72a3e58986ec61711ac99bbce1968a6e38979e2c825acd9d2ac55db4a1a7146b24827407a32bf1e3f55
|
7
|
+
data.tar.gz: 6076253c378d491e9ce7b27829415fe1e85d3d25b85a9b485f8ddf62bb7413631710c91c5e480482bcedcab07d32bb97288f4a350a01c431cd82daca74f2bb78
|
@@ -43,6 +43,17 @@ module OpenAPIParser
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
+
class NotOneOf < OpenAPIError
|
47
|
+
def initialize(value, reference)
|
48
|
+
super(reference)
|
49
|
+
@value = value
|
50
|
+
end
|
51
|
+
|
52
|
+
def message
|
53
|
+
"#{@value} isn't one of in #{@reference}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
46
57
|
class NotAnyOf < OpenAPIError
|
47
58
|
def initialize(value, reference)
|
48
59
|
super(reference)
|
@@ -9,6 +9,7 @@ require_relative 'schema_validators/object_validator'
|
|
9
9
|
require_relative 'schema_validators/array_validator'
|
10
10
|
require_relative 'schema_validators/any_of_validator'
|
11
11
|
require_relative 'schema_validators/all_of_validator'
|
12
|
+
require_relative 'schema_validators/one_of_validator'
|
12
13
|
require_relative 'schema_validators/nil_validator'
|
13
14
|
|
14
15
|
class OpenAPIParser::SchemaValidator
|
@@ -90,6 +91,7 @@ class OpenAPIParser::SchemaValidator
|
|
90
91
|
def validator(value, schema)
|
91
92
|
return any_of_validator if schema.any_of
|
92
93
|
return all_of_validator if schema.all_of
|
94
|
+
return one_of_validator if schema.one_of
|
93
95
|
return nil_validator if value.nil?
|
94
96
|
|
95
97
|
case schema.type
|
@@ -142,6 +144,10 @@ class OpenAPIParser::SchemaValidator
|
|
142
144
|
@all_of_validator ||= OpenAPIParser::SchemaValidator::AllOfValidator.new(self, @coerce_value)
|
143
145
|
end
|
144
146
|
|
147
|
+
def one_of_validator
|
148
|
+
@one_of_validator ||= OpenAPIParser::SchemaValidator::OneOfValidator.new(self, @coerce_value)
|
149
|
+
end
|
150
|
+
|
145
151
|
def nil_validator
|
146
152
|
@nil_validator ||= OpenAPIParser::SchemaValidator::NilValidator.new(self, @coerce_value)
|
147
153
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class OpenAPIParser::SchemaValidator
|
2
|
+
class OneOfValidator < Base
|
3
|
+
# @param [Object] value
|
4
|
+
# @param [OpenAPIParser::Schemas::Schema] schema
|
5
|
+
def coerce_and_validate(value, schema)
|
6
|
+
# if multiple schemas are satisfied, it's not valid
|
7
|
+
result = schema.one_of.one? do |s|
|
8
|
+
_coerced, err = validatable.validate_schema(value, s)
|
9
|
+
err.nil?
|
10
|
+
end
|
11
|
+
if result
|
12
|
+
[value, nil]
|
13
|
+
else
|
14
|
+
[nil, OpenAPIParser::NotOneOf.new(value, schema.object_reference)]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
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.2.
|
4
|
+
version: 0.2.4
|
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-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -180,6 +180,7 @@ files:
|
|
180
180
|
- lib/openapi_parser/schema_validators/integer_validator.rb
|
181
181
|
- lib/openapi_parser/schema_validators/nil_validator.rb
|
182
182
|
- lib/openapi_parser/schema_validators/object_validator.rb
|
183
|
+
- lib/openapi_parser/schema_validators/one_of_validator.rb
|
183
184
|
- lib/openapi_parser/schema_validators/options.rb
|
184
185
|
- lib/openapi_parser/schema_validators/string_validator.rb
|
185
186
|
- lib/openapi_parser/schemas.rb
|
@@ -219,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
220
|
- !ruby/object:Gem::Version
|
220
221
|
version: '0'
|
221
222
|
requirements: []
|
222
|
-
rubygems_version: 3.0.
|
223
|
+
rubygems_version: 3.0.1
|
223
224
|
signing_key:
|
224
225
|
specification_version: 4
|
225
226
|
summary: OpenAPI3 parser
|