openapi_parameters 0.5.0 → 0.6.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: 778cfe7ccd40119158a3c158b5cf1dcf8000436a4c747a1ecfa349782ffa99d1
4
- data.tar.gz: ebdb7a20b68b881e526e11fd30e05458ed8dd5dea34b16f94115e522dfa1801f
3
+ metadata.gz: b798ca1e80a551797f19f1b1f2242b7785af3158446c898d9b0aadaa9c520777
4
+ data.tar.gz: d8540ac316847320ace7b8379395514c5f2deee2b711ab097e8b73c22b2de14f
5
5
  SHA512:
6
- metadata.gz: 61c5e95989223be85f4965355aede74739ac71a3f07ebeba9b6486ef56acf45a64093ffa23b680d1ccad28f7abbbcc4d94a6135acf4575f87f7e67773ccdd97c
7
- data.tar.gz: 82fe0b18f8a79e758b5b3a3a496a8de373cc7a47079a3944cd5a6843130c03c1ca6b5173d479a8c2c0a14697e106f2d1aa407d6181e1feac8e5b2cdd074bb4bd
6
+ metadata.gz: c8c9011ca61153e8fb20f375aa3bda9f11f69a4bac614726cff883f1811e219eece7a4cad2ee384ead8d0688a6f327783ed1c156cc94505ad791341e22d0fc97
7
+ data.tar.gz: 1e5fe939d22288b0196ea0a85a7152f022f2f3e96a2f5ac65329f97cb7448517b1df0b13926cf0d4ef227346ca4f002e2727bc8a2e5ceacfadca857b9ffa3dbf
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.6.0] - 2025-06-23
4
+
5
+ - Array parameters without a value ("?ids=" or "?ids") return an empty array instead of nil or an empty string.
6
+ This makes parsing more consistent, because it should not matter if "=" is added or not.
7
+
8
+ ## [0.5.1] - 2025-06-17
9
+
10
+ - Raise `Rack::Utils::InvalidParameterError` when query paramter has invalid "%"-encoding
11
+
3
12
  ## [0.5.0] - 2025-04-01
4
13
 
5
14
  - Add option to remove "[]" from unpacked query openapi_parameters
@@ -26,6 +26,12 @@ module OpenapiParameters
26
26
  value
27
27
  end)
28
28
 
29
+ register('array', lambda do |value|
30
+ break [] if value.nil? || value.empty?
31
+
32
+ value
33
+ end)
34
+
29
35
  register('number', lambda do |value|
30
36
  Float(value)
31
37
  rescue StandardError
@@ -6,4 +6,6 @@ module OpenapiParameters
6
6
 
7
7
  class NotSupportetError < Error
8
8
  end
9
+
10
+ InvalidParameterError = Rack::Utils::InvalidParameterError
9
11
  end
@@ -14,7 +14,7 @@ module OpenapiParameters
14
14
  end
15
15
 
16
16
  def unpack(query_string) # rubocop:disable Metrics/AbcSize
17
- parsed_query = Rack::Utils.parse_query(query_string)
17
+ parsed_query = parse_query(query_string)
18
18
  parameters.each_with_object({}) do |parameter, result|
19
19
  if parameter.deep_object?
20
20
  parsed_nested_query = Rack::Utils.parse_nested_query(query_string)
@@ -40,6 +40,14 @@ module OpenapiParameters
40
40
 
41
41
  private
42
42
 
43
+ def parse_query(query_string)
44
+ Rack::Utils.parse_query(query_string) do |s|
45
+ Rack::Utils.unescape(s)
46
+ rescue ArgumentError => e
47
+ raise Rack::Utils::InvalidParameterError, e.message
48
+ end
49
+ end
50
+
43
51
  def convert_primitive(value, parameter)
44
52
  return value unless @convert
45
53
  return value if value == ''
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenapiParameters
4
- VERSION = '0.5.0'
4
+ VERSION = '0.6.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapi_parameters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Haller
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-04-01 00:00:00.000000000 Z
11
+ date: 2025-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack