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: 10f8741c65e467cb3bb7d7234741cdec47788c3100feefee31c79e76062ae773
4
- data.tar.gz: 26a88f0de87afc6a5af8e0895ad471400dc7bd0aa3241f38b95f49a5fa5d33e2
3
+ metadata.gz: db2325855cec3fb7ebe98a4e40ee654a16f90fe90120b9f52997165b9ab8bc00
4
+ data.tar.gz: f2887d474e4e9faba6217a6ee60ac4ad4b88f86b74658c090c5f041537979097
5
5
  SHA512:
6
- metadata.gz: 9a22b925c6433b99d29ea4bdf1d4ecbe4ca7212f223e24f7ae20105c131d8fec3320859fd3dbb18a6e96bdb322b3de39fa25dabed61bc9084cc9f7b59ca52bd5
7
- data.tar.gz: ae2f7d1d332634a4ad944ae74a2e429233d4fe32278f4a651a2f0e82dd9e59bf92dbb69cdbb1ac027b653ed11630423f830070dd711caf9807443be108b733be
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
@@ -1,3 +1,3 @@
1
1
  module OpenAPIParser
2
- VERSION = '0.2.3'.freeze
2
+ VERSION = '0.2.4'.freeze
3
3
  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.3
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-03-18 00:00:00.000000000 Z
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.3
223
+ rubygems_version: 3.0.1
223
224
  signing_key:
224
225
  specification_version: 4
225
226
  summary: OpenAPI3 parser