openapi_parameters 0.9.0 → 0.10.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: 6e4a1690610c9bbbd5f901f5521b8d5c417d5679b2d3c22bf7c3b4fe5863a9a4
4
- data.tar.gz: 37cadc3d8d9ff17c11082d1fe14db177b1778d14f0b89698fe5ad2292b5927db
3
+ metadata.gz: 52bca4aebd3d66fa0a3edc68d3ce71a24a223a31be135677a8fb9ea09a4055bc
4
+ data.tar.gz: '03230596b824ee0a59ca68048bcfc68e884af2cbbb3b14ea3952c1f917a7d87b'
5
5
  SHA512:
6
- metadata.gz: b842ce9afd9246033103fddc51a26e888d9154eb4e694722f55c3ad3cb6a8226b3315e738411e71a21c516b5ef4f3bd8d86699d4638016b7c5aa5cec52b252c8
7
- data.tar.gz: '09dd12da6978846a76a680fb22a859f339fb398bc3733682bf5924ff42d6de39e13b3f2f231552f777e175a1894fe9a915cd449dc7157b0ae2d37de21bd7b1b9'
6
+ metadata.gz: e5bf0752ef3be5d397cd5f5cee010a5e89fc4c1a1821ec0b86411fb1a97bfae8e81be46f5fa94d5bd47940c921f0a0dab9641f591f6ceddecfc856dd881f34d7
7
+ data.tar.gz: 8244a7c1c93ef4c0c2ee88374c4bb72f3f6295a11637fff60b02ad96e9015e702b284251eff003309ebdc0bb8f6ccf38f85334a9be7d6801bcd0b6f48cc5e808
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.10.0] - 2025-11-23
4
+
5
+ - remove `OpenapiParameters::Parameter#definition` to clean up interface
6
+ - Add `OpenapiParameters::Query#unknown_values` to find unknown query parameters
7
+
3
8
  ## [0.9.0] - 2025-11-07
4
9
 
5
10
  - Add support for unpacking query parameters that use deepObject and oneOf,andOf,anyOf,if-them-else
data/README.md CHANGED
@@ -28,6 +28,10 @@ query_parameters = OpenapiParameters::Query.new([{
28
28
  query_string = env['QUERY_STRING'] # => 'ids=1&ids=2'
29
29
  query_parameters.unpack(query_string) # => { 'ids' => [1, 2] }
30
30
 
31
+ # Find unknown query parameters
32
+ # Note that this does only return unknown top-level values
33
+ query_parameters.unknown_values('ids=1&ids=2&foo=bar') # => { 'foo' => 'bar' }
34
+
31
35
  path_parameters = OpenapiParameters::Path.new(parameters)
32
36
  route_params = env['route.params'] # This depends on the webframework you are using
33
37
  path_parameters.unpack(route_params) # => { 'ids' => [1, 2, 3] }
@@ -13,7 +13,8 @@ module OpenapiParameters
13
13
  check_supported!
14
14
  end
15
15
 
16
- attr_reader :definition, :name
16
+ attr_reader :name
17
+ private attr_reader :definition
17
18
 
18
19
  def convert(value)
19
20
  @converter.call(value)
@@ -34,6 +34,24 @@ module OpenapiParameters
34
34
  end
35
35
  end
36
36
 
37
+ def unknown_values(query_string)
38
+ parsed_query = parse_query(query_string)
39
+ known_parameter_names = parameters.to_set(&:name)
40
+
41
+ unknown = parsed_query.each_with_object({}) do |(key, value), result|
42
+ # Skip parameters that are defined in the schema
43
+ next if known_parameter_names.include?(key)
44
+
45
+ # Skip deep object parameters that might belong to defined parameters
46
+ next if parameters.any? { |param| param.deep_object? && key.start_with?("#{param.name}[") }
47
+
48
+ result[key] = value
49
+ end
50
+ return if unknown.empty?
51
+
52
+ unknown
53
+ end
54
+
37
55
  attr_reader :parameters
38
56
  private attr_reader :remove_array_brackets, :parameter_property_schemas
39
57
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenapiParameters
4
- VERSION = '0.9.0'
4
+ VERSION = '0.10.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapi_parameters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Haller