openapi3_parser 0.5.0 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e48a69a367595cb50a68fbfef79e0d9fc925c61
4
- data.tar.gz: a53afad6f342b79d622201e9b87cd014be1eeac8
3
+ metadata.gz: b49ddc5e4db7f288ea2c27f4cbdd40642b86b037
4
+ data.tar.gz: 3c391e226bf011a8e1c4b726201ea82b594b1112
5
5
  SHA512:
6
- metadata.gz: 2d772db41130444cbb1bfae66508ec1bde2ae21ba583da15b9cf3776d68dee5864f061e5e333a7cd2676361f9ac3bd6362efc4afaccaa0967b47c1fcbc00c781
7
- data.tar.gz: 79df18c70a0e16b3d509c669a37be4b421b8b2504e36ff97b4144cbb982123c6d146c77a190eda794abb7ecd8282d41397006ba3284452ba65220e2952f6b6a4
6
+ metadata.gz: 5bb0981638b6f39307638fafa63a2cb184eb09117063cdba579d350e3fc369f433646c73f7d324ada7a06e947d69550be601ca2c8fda89297470de9c9360c0da
7
+ data.tar.gz: c9867350e4f9253ee0b18d1d97a9a4b67bf1cb6b7081957fe650caad86e915ff9956941be6a18ffdfad800d0fd5fd562a801e7a6d9e8bb5ed37d608c921e879e
@@ -1,4 +1,8 @@
1
- # Unreleased
1
+ # 0.5.1
2
+
3
+ - Bugfix for allowing maps to have extension like field names
4
+
5
+ # 0.5.0
2
6
 
3
7
  - Support for recursive references - fixes: https://github.com/kevindew/openapi3_parser/issues/4
4
8
  - `node_at` method on nodes and document to allow looking up nodes by string
@@ -12,7 +12,7 @@ module Openapi3Parser
12
12
  module NodeFactory
13
13
  class Map
14
14
  attr_reader :allow_extensions, :context, :data, :default,
15
- :key_input_type, :value_input_type, :value_factory,
15
+ :value_input_type, :value_factory,
16
16
  :validation
17
17
 
18
18
  # rubocop:disable Metrics/ParameterLists
@@ -20,7 +20,6 @@ module Openapi3Parser
20
20
  context,
21
21
  allow_extensions: false,
22
22
  default: {},
23
- key_input_type: String,
24
23
  value_input_type: nil,
25
24
  value_factory: nil,
26
25
  validate: nil
@@ -28,7 +27,6 @@ module Openapi3Parser
28
27
  @context = context
29
28
  @allow_extensions = allow_extensions
30
29
  @default = default
31
- @key_input_type = key_input_type
32
30
  @value_input_type = value_input_type
33
31
  @value_factory = value_factory
34
32
  @validation = validate
@@ -77,7 +75,7 @@ module Openapi3Parser
77
75
 
78
76
  def process_data(data)
79
77
  data.each_with_object({}) do |(key, value), memo|
80
- memo[key] = if EXTENSION_REGEX =~ key || !value_factory
78
+ memo[key] = if EXTENSION_REGEX =~ key.to_s || !value_factory
81
79
  value
82
80
  else
83
81
  next_context = Context.next_field(context, key)
@@ -136,7 +134,6 @@ module Openapi3Parser
136
134
  return default_value if factory.nil_input?
137
135
 
138
136
  TypeChecker.raise_on_invalid_type(factory.context, type: ::Hash)
139
- check_unexpected_fields(raise_on_invalid: true)
140
137
  check_keys(raise_on_invalid: true)
141
138
  check_values(raise_on_invalid: true)
142
139
  validate(raise_on_invalid: true)
@@ -153,7 +150,6 @@ module Openapi3Parser
153
150
  attr_reader :factory, :validatable
154
151
 
155
152
  def collate_errors
156
- check_unexpected_fields(raise_on_invalid: false)
157
153
  check_keys(raise_on_invalid: false)
158
154
  check_values(raise_on_invalid: false)
159
155
  validate(raise_on_invalid: false)
@@ -171,24 +167,13 @@ module Openapi3Parser
171
167
  end
172
168
  end
173
169
 
174
- def check_unexpected_fields(raise_on_invalid: false)
175
- Validators::UnexpectedFields.call(
176
- validatable,
177
- allowed_fields: nil,
178
- raise_on_invalid: raise_on_invalid,
179
- allow_extensions: factory.allow_extensions
180
- )
181
- end
182
-
183
170
  def check_keys(raise_on_invalid: false)
184
- return unless factory.key_input_type
185
-
186
171
  if raise_on_invalid
187
172
  TypeChecker.raise_on_invalid_keys(factory.context,
188
- type: factory.key_input_type)
173
+ type: ::String)
189
174
  else
190
175
  TypeChecker.validate_keys(validatable,
191
- type: factory.key_input_type,
176
+ type: ::String,
192
177
  context: factory.context)
193
178
  end
194
179
  end
@@ -197,6 +182,8 @@ module Openapi3Parser
197
182
  return unless factory.value_input_type
198
183
 
199
184
  factory.context.input.keys.each do |key|
185
+ next if factory.allow_extensions && key.to_s =~ EXTENSION_REGEX
186
+
200
187
  check_field_type(
201
188
  Context.next_field(factory.context, key), raise_on_invalid
202
189
  )
@@ -14,8 +14,8 @@ module Openapi3Parser
14
14
  end
15
15
 
16
16
  def call(validatable,
17
+ allowed_fields:,
17
18
  allow_extensions: true,
18
- allowed_fields: nil,
19
19
  raise_on_invalid: true)
20
20
  fields = unexpected_fields(validatable.input,
21
21
  allowed_fields,
@@ -37,15 +37,9 @@ module Openapi3Parser
37
37
  private
38
38
 
39
39
  def unexpected_fields(input, allowed_fields, allow_extensions)
40
- if allowed_fields
41
- extra_keys = input.keys - allowed_fields
42
- return extra_keys unless allow_extensions
43
- extra_keys.reject { |key| key =~ NodeFactory::EXTENSION_REGEX }
44
- elsif !allow_extensions
45
- input.keys.select { |key| key =~ NodeFactory::EXTENSION_REGEX }
46
- else
47
- []
48
- end
40
+ extra_keys = input.keys - allowed_fields
41
+ return extra_keys unless allow_extensions
42
+ extra_keys.reject { |key| key =~ NodeFactory::EXTENSION_REGEX }
49
43
  end
50
44
  end
51
45
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Openapi3Parser
4
- VERSION = "0.5.0"
4
+ VERSION = "0.5.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapi3_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Dew
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-30 00:00:00.000000000 Z
11
+ date: 2018-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commonmarker