openapi_parser 2.3.0 → 2.3.1
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/.github/workflows/ci.yaml +3 -1
- data/CHANGELOG.md +3 -0
- data/README.md +1 -1
- data/lib/openapi_parser/config.rb +5 -0
- data/lib/openapi_parser/schema_validator/options.rb +5 -2
- data/lib/openapi_parser/schema_validator/string_validator.rb +12 -9
- data/lib/openapi_parser/schema_validator.rb +2 -1
- data/lib/openapi_parser/version.rb +1 -1
- data/sig/openapi_parser/config.rbs +1 -0
- data/sig/openapi_parser/schema_validator.rbs +1 -0
- data/sig/openapi_parser/schema_validators/options.rbs +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b3129b448382c0b36273808c25a197c9264ec23d4729c93f8c5594375cf16cc5
|
|
4
|
+
data.tar.gz: 57aa683478c58dd684995e326687ef8e187a08fe4818e707812b1484a3e6e13b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1e99aa6ea5ae7234c886c17c6d48bdeb75480db7698057aa77825301c0151caa986b59f6cc0b5a5a421c135fb47fb513e6440b6a3a18db4dae2f25620001f05a
|
|
7
|
+
data.tar.gz: b5886770b412d8d73fe30a07039fcf76773880874e4762bd704e6ab3c4b545ade6ed722ebd010717af42c9e09e4e3ccd4fc0f53954c9d98bd24e64583ed99e48
|
data/.github/workflows/ci.yaml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -27,7 +27,7 @@ request_operation.path_params
|
|
|
27
27
|
# => {"template_name"=>"1"}
|
|
28
28
|
|
|
29
29
|
# coerce parameter
|
|
30
|
-
root = OpenAPIParser.parse(YAML.load_file('open_api_3/schema.yml'), {coerce_value: true, datetime_coerce_class: DateTime})
|
|
30
|
+
root = OpenAPIParser.parse(YAML.load_file('open_api_3/schema.yml'), {coerce_value: true, datetime_coerce_class: DateTime, date_coerce_class: Date})
|
|
31
31
|
request_operation = root.request_operation(:get, '/string_params_coercer')
|
|
32
32
|
request_operation.validate_request_parameter({'integer_1' => '1', 'datetime_string' => '2016-04-01T16:00:00+09:00'})
|
|
33
33
|
# => {"integer_1"=>1, "datetime_string"=>#<DateTime: 2016-04-01T16:00:00+09:00 ((2457480j,25200s,0n),+32400s,2299161j)>
|
|
@@ -19,6 +19,10 @@ class OpenAPIParser::Config
|
|
|
19
19
|
@config[:datetime_coerce_class]
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
def date_coerce_class
|
|
23
|
+
@config[:date_coerce_class]
|
|
24
|
+
end
|
|
25
|
+
|
|
22
26
|
def coerce_value
|
|
23
27
|
@config[:coerce_value]
|
|
24
28
|
end
|
|
@@ -46,6 +50,7 @@ class OpenAPIParser::Config
|
|
|
46
50
|
@request_validator_options ||= OpenAPIParser::SchemaValidator::Options.new(allow_empty_date_and_datetime: allow_empty_date_and_datetime,
|
|
47
51
|
coerce_value: coerce_value,
|
|
48
52
|
datetime_coerce_class: datetime_coerce_class,
|
|
53
|
+
date_coerce_class: date_coerce_class,
|
|
49
54
|
validate_header: validate_header)
|
|
50
55
|
end
|
|
51
56
|
|
|
@@ -6,14 +6,17 @@ class OpenAPIParser::SchemaValidator
|
|
|
6
6
|
# @return [Boolean] coerce value option on/off
|
|
7
7
|
# @!attribute [r] datetime_coerce_class
|
|
8
8
|
# @return [Object, nil] coerce datetime string by this Object class
|
|
9
|
+
# @!attribute [r] date_coerce_class
|
|
10
|
+
# @return [Object, nil] coerce date string by this Object class
|
|
9
11
|
# @!attribute [r] validate_header
|
|
10
12
|
# @return [Boolean] validate header or not
|
|
11
|
-
attr_reader :allow_empty_date_and_datetime, :coerce_value, :datetime_coerce_class, :validate_header
|
|
13
|
+
attr_reader :allow_empty_date_and_datetime, :coerce_value, :datetime_coerce_class, :validate_header, :date_coerce_class
|
|
12
14
|
|
|
13
|
-
def initialize(allow_empty_date_and_datetime: false, coerce_value: nil, datetime_coerce_class: nil, validate_header: true)
|
|
15
|
+
def initialize(allow_empty_date_and_datetime: false, coerce_value: nil, datetime_coerce_class: nil, validate_header: true, date_coerce_class: nil)
|
|
14
16
|
@allow_empty_date_and_datetime = allow_empty_date_and_datetime
|
|
15
17
|
@coerce_value = coerce_value
|
|
16
18
|
@datetime_coerce_class = datetime_coerce_class
|
|
19
|
+
@date_coerce_class = date_coerce_class
|
|
17
20
|
@validate_header = validate_header
|
|
18
21
|
end
|
|
19
22
|
end
|
|
@@ -2,10 +2,11 @@ class OpenAPIParser::SchemaValidator
|
|
|
2
2
|
class StringValidator < Base
|
|
3
3
|
include ::OpenAPIParser::SchemaValidator::Enumable
|
|
4
4
|
|
|
5
|
-
def initialize(validator, allow_empty_date_and_datetime, coerce_value, datetime_coerce_class)
|
|
5
|
+
def initialize(validator, allow_empty_date_and_datetime, coerce_value, datetime_coerce_class, date_coerce_class)
|
|
6
6
|
super(validator, coerce_value)
|
|
7
7
|
@allow_empty_date_and_datetime = allow_empty_date_and_datetime
|
|
8
8
|
@datetime_coerce_class = datetime_coerce_class
|
|
9
|
+
@date_coerce_class = date_coerce_class
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
def coerce_and_validate(value, schema, **_keyword_args)
|
|
@@ -90,16 +91,18 @@ class OpenAPIParser::SchemaValidator
|
|
|
90
91
|
return [nil, OpenAPIParser::InvalidDateFormat.new(value, schema.object_reference)] unless value =~ /^\d{4}-\d{2}-\d{2}$/
|
|
91
92
|
|
|
92
93
|
begin
|
|
93
|
-
|
|
94
|
+
if @date_coerce_class.nil?
|
|
95
|
+
# validate only
|
|
96
|
+
Date.iso8601(value)
|
|
97
|
+
[value, nil]
|
|
98
|
+
else
|
|
99
|
+
# validate and coerce
|
|
100
|
+
[@date_coerce_class.iso8601(value), nil]
|
|
101
|
+
end
|
|
94
102
|
rescue ArgumentError
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
unless parsed_date.strftime('%Y-%m-%d') == value
|
|
99
|
-
return [nil, OpenAPIParser::InvalidDateFormat.new(value, schema.object_reference)]
|
|
103
|
+
# when rfc3339(value) failed
|
|
104
|
+
[nil, OpenAPIParser::InvalidDateFormat.new(value, schema.object_reference)]
|
|
100
105
|
end
|
|
101
|
-
|
|
102
|
-
return [value, nil]
|
|
103
106
|
end
|
|
104
107
|
|
|
105
108
|
def validate_datetime_format(value, schema)
|
|
@@ -56,6 +56,7 @@ class OpenAPIParser::SchemaValidator
|
|
|
56
56
|
@allow_empty_date_and_datetime = options.allow_empty_date_and_datetime
|
|
57
57
|
@coerce_value = options.coerce_value
|
|
58
58
|
@datetime_coerce_class = options.datetime_coerce_class
|
|
59
|
+
@date_coerce_class = options.date_coerce_class
|
|
59
60
|
end
|
|
60
61
|
|
|
61
62
|
# execute validate data
|
|
@@ -121,7 +122,7 @@ class OpenAPIParser::SchemaValidator
|
|
|
121
122
|
end
|
|
122
123
|
|
|
123
124
|
def string_validator
|
|
124
|
-
@string_validator ||= OpenAPIParser::SchemaValidator::StringValidator.new(self, @allow_empty_date_and_datetime, @coerce_value, @datetime_coerce_class)
|
|
125
|
+
@string_validator ||= OpenAPIParser::SchemaValidator::StringValidator.new(self, @allow_empty_date_and_datetime, @coerce_value, @datetime_coerce_class, @date_coerce_class)
|
|
125
126
|
end
|
|
126
127
|
|
|
127
128
|
def integer_validator
|
|
@@ -9,6 +9,7 @@ module OpenAPIParser
|
|
|
9
9
|
|
|
10
10
|
def initialize: (untyped config) -> untyped
|
|
11
11
|
def allow_empty_date_and_datetime: -> bool
|
|
12
|
+
def date_coerce_class: -> (singleton(Object) | nil)
|
|
12
13
|
def datetime_coerce_class: -> (singleton(Object) | nil)
|
|
13
14
|
def coerce_value: -> bool
|
|
14
15
|
def expand_reference: -> bool
|
|
@@ -6,6 +6,7 @@ module OpenAPIParser
|
|
|
6
6
|
@schema: OpenAPIParser::Schemas::Schema
|
|
7
7
|
@coerce_value: bool | nil
|
|
8
8
|
@datetime_coerce_class: singleton(Object) | nil
|
|
9
|
+
@date_coerce_class: singleton(Object) | nil
|
|
9
10
|
@string_validator: OpenAPIParser::SchemaValidator::StringValidator | nil
|
|
10
11
|
@integer_validator: OpenAPIParser::SchemaValidator::IntegerValidator | nil
|
|
11
12
|
@float_validator: OpenAPIParser::SchemaValidator::FloatValidator | nil
|
|
@@ -6,7 +6,7 @@ module OpenAPIParser
|
|
|
6
6
|
attr_reader coerce_value: bool | nil
|
|
7
7
|
attr_reader datetime_coerce_class: singleton(Object) | nil
|
|
8
8
|
attr_reader validate_header: bool
|
|
9
|
-
def initialize: (?allow_empty_date_and_datetime: bool | nil, ?coerce_value: bool | nil, ?datetime_coerce_class: singleton(Object) | nil, ?validate_header: bool) -> untyped
|
|
9
|
+
def initialize: (?allow_empty_date_and_datetime: bool | nil, ?coerce_value: bool | nil, ?datetime_coerce_class: singleton(Object) | nil, ?date_coerce_class: singleton(Object) | nil, ?validate_header: bool) -> untyped
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
class ResponseValidateOptions
|