openapi_contracts 0.16.6 → 0.17.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: e8fb3b38b62762258d68a7f9d00d4638a6a95a6af18fe5a95b897fa70d9167af
4
- data.tar.gz: 92527099886fe57922ffbd87c9fff3fffdae96f1a56beb59a59a1a6e7362b1f0
3
+ metadata.gz: 23dd8bf2e1034f228bccf143435d86259aab3c54107192bd70ad86f562efc634
4
+ data.tar.gz: 704a4e76a3230e638e8cc7df6ad96691ea64a77c12d0ca3dd84cf674f9a586cd
5
5
  SHA512:
6
- metadata.gz: 78fca0b72a20e29e3fb0b2f941c51491f6120a979332d419b5bdd842c1b8ba3dc4cd3a7cc338b91cb3e6ae2dc4217ede07407c72f2d3e8757d4d358eef22f81a
7
- data.tar.gz: a4e7e55983e3acdffbc2e18af27910792156396d5af7274cff178dba6386bd51e0250c27f510a33cf21063eae3cba17e1d2103f243c07296d538eb279be877c7
6
+ metadata.gz: abddf34c06c34160b6590167918d90607335867e4740f58a8a548d6d546d38d0f1525a8b865062a250ab374c29e5e2d5b87955b4777c94862948f55e661a98f3
7
+ data.tar.gz: 218ea3f920c4bedf9fa48548b013dd3514c51d3c9412d27b7167ee4f66fb9c9e357f00c0305ef42c1cc964a986aed11caf206da0593958d372f441f3b57bb585
@@ -11,11 +11,9 @@ module OpenapiContracts
11
11
  end
12
12
 
13
13
  def headers
14
- return @headers if instance_variable_defined? :@headers
15
-
16
- @headers = @schema.fetch('headers', {}).map do |(key, val)|
17
- Doc::Header.new(key, val)
18
- end
14
+ @headers ||= Array.wrap(
15
+ @schema.navigate('headers')&.each&.map { |key, schema| Doc::Header.new(key, schema.to_h) }
16
+ )
19
17
  end
20
18
 
21
19
  def schema_for(media_type)
@@ -19,6 +19,9 @@ module OpenapiContracts::Validators
19
19
  if value.blank?
20
20
  @errors << "Missing header #{header.name}" if header.required?
21
21
  else
22
+ # Header values arrive as strings; deserialize to the schema's type
23
+ # (per `style: simple`) before validating, as Doc::Parameter does.
24
+ value = OpenapiParameters::Converter.convert(value, header.schema)
22
25
  schemer = JSONSchemer.schema(header.schema)
23
26
  unless schemer.valid?(value)
24
27
  validation_errors = schemer.validate(value).to_a
@@ -21,12 +21,10 @@ module OpenapiContracts
21
21
  autoload :PayloadParser, 'openapi_contracts/payload_parser'
22
22
  autoload :Validators, 'openapi_contracts/validators'
23
23
 
24
- include ActiveSupport::Configurable
24
+ mattr_accessor :collect_coverage, default: false
25
25
 
26
26
  Env = Struct.new(:operation, :options, :request, :response, keyword_init: true)
27
27
 
28
- config_accessor(:collect_coverage) { false }
29
-
30
28
  module_function
31
29
 
32
30
  def match(doc, response, options = {})
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapi_contracts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.6
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mkon
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-06-24 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: activesupport
@@ -153,6 +154,7 @@ dependencies:
153
154
  - - "~>"
154
155
  - !ruby/object:Gem::Version
155
156
  version: 0.22.0
157
+ description:
156
158
  email:
157
159
  - konstantin@munteanu.de
158
160
  executables: []
@@ -197,6 +199,7 @@ licenses:
197
199
  - MIT
198
200
  metadata:
199
201
  rubygems_mfa_required: 'true'
202
+ post_install_message:
200
203
  rdoc_options: []
201
204
  require_paths:
202
205
  - lib
@@ -214,7 +217,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
217
  - !ruby/object:Gem::Version
215
218
  version: '0'
216
219
  requirements: []
217
- rubygems_version: 4.0.3
220
+ rubygems_version: 3.0.3.1
221
+ signing_key:
218
222
  specification_version: 4
219
223
  summary: Openapi schemas as API contracts
220
224
  test_files: []