openapi_parser 0.2.3 → 0.2.4

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: 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