openapi_parser 0.3.1 → 0.4.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 +3 -0
- data/lib/openapi_parser/errors.rb +44 -0
- data/lib/openapi_parser/schema_validator.rb +1 -0
- data/lib/openapi_parser/schema_validators/float_validator.rb +5 -1
- data/lib/openapi_parser/schema_validators/integer_validator.rb +5 -1
- data/lib/openapi_parser/schema_validators/minimum_maximum.rb +38 -0
- data/lib/openapi_parser/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0a5e0fc6c25502d4dab97d5fff4956daa05f5e543302328c394655f34a575ba
|
4
|
+
data.tar.gz: 7497efbb3bfe8921c34570614b653930c2e122e24f9ecbc57d86b4e766b29a2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c97aa5cbdaade862ecb079cf8c89767c4cfadb0c81a591735892a4a2ba3f61955c1d41f10fddff8d1069f64e2d79eca5098267b64145f861e54ae979c4b58a5a
|
7
|
+
data.tar.gz: 06c3c526614c98ec489fa1d87237d44d428a9031bbd8fa405aa77d144226dcc2c6a03b44421a10edc94d049cde6e56fcb2cf8602a789f0a12bec3606f0c2776c
|
data/CHANGELOG.md
CHANGED
@@ -110,6 +110,50 @@ module OpenAPIParser
|
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
113
|
+
class LessThanMinimum < OpenAPIError
|
114
|
+
def initialize(value, reference)
|
115
|
+
super(reference)
|
116
|
+
@value = value
|
117
|
+
end
|
118
|
+
|
119
|
+
def message
|
120
|
+
"#{@value} cannot be less than minimum value in #{@reference}"
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
class LessThanExclusiveMinimum < OpenAPIError
|
125
|
+
def initialize(value, reference)
|
126
|
+
super(reference)
|
127
|
+
@value = value
|
128
|
+
end
|
129
|
+
|
130
|
+
def message
|
131
|
+
"#{@value} cannot be less than or equal to exclusive minimum value in #{@reference}"
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
class MoreThanMaximum < OpenAPIError
|
136
|
+
def initialize(value, reference)
|
137
|
+
super(reference)
|
138
|
+
@value = value
|
139
|
+
end
|
140
|
+
|
141
|
+
def message
|
142
|
+
"#{@value} cannot be more than maximum value in #{@reference}"
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
class MoreThanExclusiveMaximum < OpenAPIError
|
147
|
+
def initialize(value, reference)
|
148
|
+
super(reference)
|
149
|
+
@value = value
|
150
|
+
end
|
151
|
+
|
152
|
+
def message
|
153
|
+
"#{@value} cannot be more than or equal to exclusive maximum value in #{@reference}"
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
113
157
|
class InvalidPattern < OpenAPIError
|
114
158
|
def initialize(value, pattern, reference)
|
115
159
|
super(reference)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative 'schema_validators/options'
|
2
2
|
require_relative 'schema_validators/enumable'
|
3
|
+
require_relative 'schema_validators/minimum_maximum'
|
3
4
|
require_relative 'schema_validators/base'
|
4
5
|
require_relative 'schema_validators/string_validator'
|
5
6
|
require_relative 'schema_validators/integer_validator'
|
@@ -1,6 +1,7 @@
|
|
1
1
|
class OpenAPIParser::SchemaValidator
|
2
2
|
class FloatValidator < Base
|
3
3
|
include ::OpenAPIParser::SchemaValidator::Enumable
|
4
|
+
include ::OpenAPIParser::SchemaValidator::MinimumMaximum
|
4
5
|
|
5
6
|
# validate float value by schema
|
6
7
|
# @param [Object] value
|
@@ -18,7 +19,10 @@ class OpenAPIParser::SchemaValidator
|
|
18
19
|
def coercer_and_validate_numeric(value, schema)
|
19
20
|
return OpenAPIParser::ValidateError.build_error_result(value, schema) unless value.kind_of?(Numeric)
|
20
21
|
|
21
|
-
check_enum_include(value, schema)
|
22
|
+
value, err = check_enum_include(value, schema)
|
23
|
+
return [nil, err] if err
|
24
|
+
|
25
|
+
check_minimum_maximum(value, schema)
|
22
26
|
end
|
23
27
|
|
24
28
|
def coerce(value)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
class OpenAPIParser::SchemaValidator
|
2
2
|
class IntegerValidator < Base
|
3
3
|
include ::OpenAPIParser::SchemaValidator::Enumable
|
4
|
+
include ::OpenAPIParser::SchemaValidator::MinimumMaximum
|
4
5
|
|
5
6
|
# validate integer value by schema
|
6
7
|
# @param [Object] value
|
@@ -10,7 +11,10 @@ class OpenAPIParser::SchemaValidator
|
|
10
11
|
|
11
12
|
return OpenAPIParser::ValidateError.build_error_result(value, schema) unless value.kind_of?(Integer)
|
12
13
|
|
13
|
-
check_enum_include(value, schema)
|
14
|
+
value, err = check_enum_include(value, schema)
|
15
|
+
return [nil, err] if err
|
16
|
+
|
17
|
+
check_minimum_maximum(value, schema)
|
14
18
|
end
|
15
19
|
|
16
20
|
private
|
@@ -0,0 +1,38 @@
|
|
1
|
+
class OpenAPIParser::SchemaValidator
|
2
|
+
module MinimumMaximum
|
3
|
+
# check minimum and maximum value by schema
|
4
|
+
# @param [Object] value
|
5
|
+
# @param [OpenAPIParser::Schemas::Schema] schema
|
6
|
+
def check_minimum_maximum(value, schema)
|
7
|
+
include_min_max = schema.minimum || schema.maximum
|
8
|
+
return [value, nil] unless include_min_max
|
9
|
+
|
10
|
+
validate(value, schema)
|
11
|
+
[value, nil]
|
12
|
+
rescue OpenAPIParser::OpenAPIError => e
|
13
|
+
return [nil, e]
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def validate(value, schema)
|
19
|
+
reference = schema.object_reference
|
20
|
+
|
21
|
+
if schema.minimum
|
22
|
+
if schema.exclusiveMinimum && value <= schema.minimum
|
23
|
+
raise OpenAPIParser::LessThanExclusiveMinimum.new(value, reference)
|
24
|
+
elsif value < schema.minimum
|
25
|
+
raise OpenAPIParser::LessThanMinimum.new(value, reference)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
if schema.maximum
|
30
|
+
if schema.exclusiveMaximum && value >= schema.maximum
|
31
|
+
raise OpenAPIParser::MoreThanExclusiveMaximum.new(value, reference)
|
32
|
+
elsif value > schema.maximum
|
33
|
+
raise OpenAPIParser::MoreThanMaximum.new(value, reference)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
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.
|
4
|
+
version: 0.4.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-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -178,6 +178,7 @@ files:
|
|
178
178
|
- lib/openapi_parser/schema_validators/enumable.rb
|
179
179
|
- lib/openapi_parser/schema_validators/float_validator.rb
|
180
180
|
- lib/openapi_parser/schema_validators/integer_validator.rb
|
181
|
+
- lib/openapi_parser/schema_validators/minimum_maximum.rb
|
181
182
|
- lib/openapi_parser/schema_validators/nil_validator.rb
|
182
183
|
- lib/openapi_parser/schema_validators/object_validator.rb
|
183
184
|
- lib/openapi_parser/schema_validators/one_of_validator.rb
|