openapi_parser 0.12.1 → 0.13.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e25413096d326cffe71e82846cc5c95c10c9d453ef7ec2026840cebc9d90ff67
4
- data.tar.gz: e2c3efef0cab1f63e0c4c682802e4a377b711b769ffce3203b47a2313c5da235
3
+ metadata.gz: 9afe7e0164ddcad6c8a8fbb6d57e0514e32df10d014bc642b88fa3473f1f8d74
4
+ data.tar.gz: cefb18a632f4a16dd948fe2e82fadfc0236a159af2406fdcb52db50ef6dc980e
5
5
  SHA512:
6
- metadata.gz: 1ddcd885be5ccfdd2cc74f60731517e9a18617d001abb3c95767905c6629e5fe6925e39cfb2668c81a94696974aab22a6a20f7eb96f403d189f9d3f6957f3fd2
7
- data.tar.gz: b588c5ebfcecb63112c8cbf97bfdacc26bcdfdcea24d38315f20210eeb4b93848ed58dd3c415d8b866363b579f026a5449993932e919005509e6254ea3d3671b
6
+ metadata.gz: fb0397b9251edac7e3bfb15e30041d5945a466c21b6671183eaec8491a372730e2f76101af71efbc7c07c66345353c260983acfb69d80f2b066c35c71207a076
7
+ data.tar.gz: 5a58f4b47946ca9c376dcce3c5be34de998a2bc3d59ee4321e2e7f0425c7cdf6b809ff9eb3a103fe099a849210def6c362431628610fdde137b3b79157a32849
data/.travis.yml CHANGED
@@ -7,9 +7,10 @@ language: ruby
7
7
  rvm:
8
8
  - 2.3.8
9
9
  - 2.4.10
10
- - 2.5.8
11
- - 2.6.6
12
- - 2.7.1
10
+ - 2.5.9
11
+ - 2.6.7
12
+ - 2.7.3
13
+ - 3.0.1
13
14
  - ruby-head
14
15
 
15
16
  cache: bundler
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 0.13.0 (2021-05-01)
4
+ * Fix a problem with remote reference to path items which have path parameters #95
5
+ * Support enum for booleans. #104
6
+
3
7
  ## 0.12.1 (2020-08-27)
4
8
  * Use CGI.unescape (warning fix) #92
5
9
 
@@ -5,25 +5,26 @@ module OpenAPIParser::Findable
5
5
  # @param [String] reference
6
6
  # @return [OpenAPIParser::Findable]
7
7
  def find_object(reference)
8
- reference = CGI.unescape(reference)
9
8
  return self if object_reference == reference
10
9
  remote_reference = !reference.start_with?('#')
11
10
  return find_remote_object(reference) if remote_reference
12
11
  return nil unless reference.start_with?(object_reference)
13
12
 
13
+ unescaped_reference = CGI.unescape(reference)
14
+
14
15
  @find_object_cache = {} unless defined? @find_object_cache
15
- if (obj = @find_object_cache[reference])
16
+ if (obj = @find_object_cache[unescaped_reference])
16
17
  return obj
17
18
  end
18
19
 
19
- if (child = _openapi_all_child_objects[reference])
20
- @find_object_cache[reference] = child
20
+ if (child = _openapi_all_child_objects[unescaped_reference])
21
+ @find_object_cache[unescaped_reference] = child
21
22
  return child
22
23
  end
23
24
 
24
25
  _openapi_all_child_objects.values.each do |c|
25
- if (obj = c.find_object(reference))
26
- @find_object_cache[reference] = obj
26
+ if (obj = c.find_object(unescaped_reference))
27
+ @find_object_cache[unescaped_reference] = obj
27
28
  return obj
28
29
  end
29
30
  end
@@ -13,7 +13,7 @@ module OpenAPIParser
13
13
  end
14
14
 
15
15
  def message
16
- "#{@reference} expected #{@type}, but received #{@data.class}: #{@data}"
16
+ "#{@reference} expected #{@type}, but received #{@data.class}: #{@data.inspect}"
17
17
  end
18
18
 
19
19
  class << self
@@ -73,7 +73,7 @@ module OpenAPIParser
73
73
  end
74
74
 
75
75
  def message
76
- "discriminator propertyName #{@key} does not exist in value #{@value} in #{@reference}"
76
+ "discriminator propertyName #{@key} does not exist in value #{@value.inspect} in #{@reference}"
77
77
  end
78
78
  end
79
79
 
@@ -84,7 +84,7 @@ module OpenAPIParser
84
84
  end
85
85
 
86
86
  def message
87
- "#{@value} isn't one of in #{@reference}"
87
+ "#{@value.inspect} isn't one of in #{@reference}"
88
88
  end
89
89
  end
90
90
 
@@ -95,7 +95,7 @@ module OpenAPIParser
95
95
  end
96
96
 
97
97
  def message
98
- "#{@value} isn't any of in #{@reference}"
98
+ "#{@value.inspect} isn't any of in #{@reference}"
99
99
  end
100
100
  end
101
101
 
@@ -106,7 +106,7 @@ module OpenAPIParser
106
106
  end
107
107
 
108
108
  def message
109
- "#{@value} isn't include enum in #{@reference}"
109
+ "#{@value.inspect} isn't part of the enum in #{@reference}"
110
110
  end
111
111
  end
112
112
 
@@ -117,7 +117,7 @@ module OpenAPIParser
117
117
  end
118
118
 
119
119
  def message
120
- "#{@reference} #{@value} is less than minimum value"
120
+ "#{@reference} #{@value.inspect} is less than minimum value"
121
121
  end
122
122
  end
123
123
 
@@ -128,7 +128,7 @@ module OpenAPIParser
128
128
  end
129
129
 
130
130
  def message
131
- "#{@reference} #{@value} cannot be less than or equal to exclusive minimum value"
131
+ "#{@reference} #{@value.inspect} cannot be less than or equal to exclusive minimum value"
132
132
  end
133
133
  end
134
134
 
@@ -139,7 +139,7 @@ module OpenAPIParser
139
139
  end
140
140
 
141
141
  def message
142
- "#{@reference} #{@value} is more than maximum value"
142
+ "#{@reference} #{@value.inspect} is more than maximum value"
143
143
  end
144
144
  end
145
145
 
@@ -150,7 +150,7 @@ module OpenAPIParser
150
150
  end
151
151
 
152
152
  def message
153
- "#{@reference} #{@value} cannot be more than or equal to exclusive maximum value"
153
+ "#{@reference} #{@value.inspect} cannot be more than or equal to exclusive maximum value"
154
154
  end
155
155
  end
156
156
 
@@ -163,7 +163,7 @@ module OpenAPIParser
163
163
  end
164
164
 
165
165
  def message
166
- "#{@reference} pattern #{@pattern} does not match value: #{@value}#{@example ? ", example: #{@example}" : ""}"
166
+ "#{@reference} pattern #{@pattern} does not match value: #{@value.inspect}#{@example ? ", example: #{@example}" : ""}"
167
167
  end
168
168
  end
169
169
 
@@ -174,7 +174,7 @@ module OpenAPIParser
174
174
  end
175
175
 
176
176
  def message
177
- "#{@reference} email address format does not match value: #{@value}"
177
+ "#{@reference} email address format does not match value: #{@value.inspect}"
178
178
  end
179
179
  end
180
180
 
@@ -185,7 +185,7 @@ module OpenAPIParser
185
185
  end
186
186
 
187
187
  def message
188
- "#{@reference} Value: #{@value} is not conformant with UUID format"
188
+ "#{@reference} Value: #{@value.inspect} is not conformant with UUID format"
189
189
  end
190
190
  end
191
191
 
@@ -208,7 +208,7 @@ module OpenAPIParser
208
208
  end
209
209
 
210
210
  def message
211
- "#{@reference} #{@value} is longer than max length"
211
+ "#{@reference} #{@value.inspect} is longer than max length"
212
212
  end
213
213
  end
214
214
 
@@ -219,7 +219,7 @@ module OpenAPIParser
219
219
  end
220
220
 
221
221
  def message
222
- "#{@reference} #{@value} is shorter than min length"
222
+ "#{@reference} #{@value.inspect} is shorter than min length"
223
223
  end
224
224
  end
225
225
 
@@ -230,7 +230,7 @@ module OpenAPIParser
230
230
  end
231
231
 
232
232
  def message
233
- "#{@reference} #{@value} contains more than max items"
233
+ "#{@reference} #{@value.inspect} contains more than max items"
234
234
  end
235
235
  end
236
236
 
@@ -241,7 +241,7 @@ module OpenAPIParser
241
241
  end
242
242
 
243
243
  def message
244
- "#{@reference} #{@value} contains fewer than min items"
244
+ "#{@reference} #{@value.inspect} contains fewer than min items"
245
245
  end
246
246
  end
247
247
  end
@@ -136,7 +136,7 @@ class OpenAPIParser::PathItemFinder
136
136
  end
137
137
  end
138
138
 
139
- # find mathing path and extract params
139
+ # find matching path and extract params
140
140
  # EXAMPLE: find_path_and_params('get', '/user/1') => ['/user/{id}', { 'id' => 1 }]
141
141
  def find_path_and_params(http_method, request_path)
142
142
  return [request_path, {}] if matches_directly?(request_path, http_method)
@@ -1,5 +1,7 @@
1
1
  class OpenAPIParser::SchemaValidator
2
2
  class BooleanValidator < Base
3
+ include ::OpenAPIParser::SchemaValidator::Enumable
4
+
3
5
  TRUE_VALUES = ['true', '1'].freeze
4
6
  FALSE_VALUES = ['false', '0'].freeze
5
7
 
@@ -8,6 +10,9 @@ class OpenAPIParser::SchemaValidator
8
10
 
9
11
  return OpenAPIParser::ValidateError.build_error_result(value, schema) unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
10
12
 
13
+ value, err = check_enum_include(value, schema)
14
+ return [nil, err] if err
15
+
11
16
  [value, nil]
12
17
  end
13
18
 
@@ -1,3 +1,3 @@
1
1
  module OpenAPIParser
2
- VERSION = '0.12.1'.freeze
2
+ VERSION = '0.13.0'.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.12.1
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ota42y
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-27 00:00:00.000000000 Z
11
+ date: 2021-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -207,7 +207,7 @@ homepage: https://github.com/ota42y/openapi_parser
207
207
  licenses:
208
208
  - MIT
209
209
  metadata: {}
210
- post_install_message:
210
+ post_install_message:
211
211
  rdoc_options: []
212
212
  require_paths:
213
213
  - lib
@@ -222,8 +222,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
222
  - !ruby/object:Gem::Version
223
223
  version: '0'
224
224
  requirements: []
225
- rubygems_version: 3.1.2
226
- signing_key:
225
+ rubygems_version: 3.2.3
226
+ signing_key:
227
227
  specification_version: 4
228
228
  summary: OpenAPI3 parser
229
229
  test_files: []