openapi_parameters 0.12.0 → 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: 69f716831414a1780a62e1d78b4405f3e9bc293f8dea9dcd9d56330c56180322
4
- data.tar.gz: 4621c4705857aa76cdf67c3f0275d4e515b63fe8429fd9de406174dd04625f23
3
+ metadata.gz: 1a8a4226fd27fc3a80b97ef9738213ff9b13751bf1aaa25b8bac035571689521
4
+ data.tar.gz: 0ea15dfaf1b5c80b638f5654abd54d01bde5e6e6a0de700b24bfb42f956d64a3
5
5
  SHA512:
6
- metadata.gz: cc2fb07a22b21031c311271166a204929170fd678385e0f69e00af18c98109550709da12bc9cd625a456cff8cd93a887c2d4b0eabb8c7850765e6095b4cf53b1
7
- data.tar.gz: f0d679df5b595877fc2033e6ee68014ef108fe13b1c9c128f423220397d79e9aba9f1cf2a5feac4bb63e6ba5afe7b59ca46c97373fcba0102e2e455f94cad960
6
+ metadata.gz: 7da826b105c08fd25719dac269629701343fb5b697634defee33a57fd4b00ad12862914ee990d7da4bd56e4f20a251eda622b9290bcf14b86bea4e65a4522b02
7
+ data.tar.gz: 45e622fe04292cc129dff6d8fae497b7727e964c7dd25d83664481afd7db938dacfa21112296558b81c15961d002d2574b8544e61048694d348d6efb7d90ce99
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.13.0] - 2026-06-23
4
+
5
+ - Changed: Require Ruby 3.3 or later
6
+ - Fixed: `deepObject` query parameter values were unescaped twice, corrupting percent-encoded characters (e.g. `%2B` became a space instead of `+`). ([#25](https://github.com/ahx/openapi_parameters/issues/25))
7
+
3
8
  ## [0.12.0] - 2026-05-18
4
9
 
5
10
  - Add support for parameters defined with a `content` field. Values for media types matching `application/json` or `*+json` are decoded with `JSON.parse` before conversion. Works for query, path, header, and cookie parameters.
@@ -12,8 +12,13 @@ module OpenapiParameters
12
12
  @parameters = parameters.map { Parameter.new(_1) }
13
13
  @convert = convert
14
14
  @remove_array_brackets = rack_array_compat
15
- @deep_object_properties = @parameters.each_with_object({}) do |param, hsh|
16
- hsh[param.name] = ObjectConverter.get_properties(param.schema) if param.deep_object?
15
+ @deep_object_properties = {}
16
+ @deep_object_regex = {}
17
+ @parameters.each do |param|
18
+ next unless param.deep_object?
19
+
20
+ @deep_object_properties[param.name] = ObjectConverter.get_properties(param.schema)
21
+ @deep_object_regex[param.name] = /^#{Regexp.escape(param.name)}#{DEEP_PROP}/
17
22
  end
18
23
  end
19
24
 
@@ -78,7 +83,7 @@ module OpenapiParameters
78
83
 
79
84
  def parse_deep_object(parameter, parsed_query)
80
85
  name = parameter.name
81
- prop_regx = /^#{name}#{DEEP_PROP}/
86
+ prop_regx = @deep_object_regex[name]
82
87
  properties_schema = @deep_object_properties[name]
83
88
 
84
89
  parsed_query.each.with_object({}) do |(key, value), result|
@@ -94,7 +99,7 @@ module OpenapiParameters
94
99
  end
95
100
 
96
101
  def explode_value(value, parameter, is_array)
97
- value = Array(value).map! { |v| Rack::Utils.unescape(v) }
102
+ value = Array(value)
98
103
  if is_array
99
104
  return value if parameter.explode?
100
105
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenapiParameters
4
- VERSION = '0.12.0'
4
+ VERSION = '0.13.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.12.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Haller
@@ -64,7 +64,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: 3.2.0
67
+ version: 3.3.0
68
68
  required_rubygems_version: !ruby/object:Gem::Requirement
69
69
  requirements:
70
70
  - - ">="