api-regulator 0.1.22 → 0.1.24

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: 97a2fcac0b82b485ccf40f8c13e042761750873c306d8277da6992b13dad34b2
4
- data.tar.gz: a0b1ca74bc889990b33ce068c539147618775659451149ffcefd394913ae78fd
3
+ metadata.gz: 6b4abd774431dfae284e9714ed72d84799e40d8c86e9b154aaa6827c75abb057
4
+ data.tar.gz: 8714012268076ad42e78a64cfb1e4d556cce657e97451f2a7552c8b271027718
5
5
  SHA512:
6
- metadata.gz: 187b90ee4f2b0343df99e9124775dd40c9279f17454a705ba0fdc1ac6a8eb293c9f095f69fb99b13d671bd29db4ebc0ac991fd0ff8193aad208a17bc6c0ecf5f
7
- data.tar.gz: 1991a0020fdaa706c0b22bed235195e5685c9ad0b25b6fe2c5925c9ff8798ad74b4016519cbbe9395caf956fb7fb7044551a0612cff239fb19c8124950165654
6
+ metadata.gz: 7db24c6a9040d526d05be3686e5e66bfe367d281665f7fa209a8d202d93bc9d0bb1725c750ccb0cedd4e73768206d207729a1d87362eba7fbdb5b5a4cf791641
7
+ data.tar.gz: e89a9066ceac3b1d082fc82150550a7aaaea20bb617188b772009e3aa14218e17fceebe67213ad8e2837ad94992ca5278abd595b8de53c1357f4e481f1f6ad3e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- api-regulator (0.1.22)
4
+ api-regulator (0.1.24)
5
5
  activemodel (~> 8.0)
6
6
  activesupport (~> 8.0)
7
7
 
@@ -135,7 +135,7 @@ GEM
135
135
  date
136
136
  stringio
137
137
  racc (1.8.1)
138
- rack (3.1.10)
138
+ rack (3.1.11)
139
139
  rack-session (2.1.0)
140
140
  base64 (>= 0.1.0)
141
141
  rack (>= 3.0.0)
@@ -204,7 +204,7 @@ GEM
204
204
  timeout (0.4.3)
205
205
  tzinfo (2.0.6)
206
206
  concurrent-ruby (~> 1.0)
207
- uri (1.0.2)
207
+ uri (1.0.3)
208
208
  useragent (0.16.11)
209
209
  websocket-driver (0.7.7)
210
210
  base64
@@ -38,12 +38,24 @@ module ApiRegulator
38
38
  body_params = api_definition.params.select(&:body?)
39
39
  permitted_body = body_params.each_with_object({}) do |param, hash|
40
40
  case param.type
41
- when :array, :object
41
+ when :array
42
+ allowed_params = [build_permitted_keys(param.children)]
43
+
44
+ if param.required?
45
+ nested = params.expect(param.name => allowed_params).map { |set| set.to_h.symbolize_keys }
46
+ hash[param.name.to_sym] = nested
47
+ else
48
+ nested = params.permit(param.name => allowed_params).map { |set| set.to_h.symbolize_keys }
49
+ hash.merge!(nested)
50
+ end
51
+ when :object
52
+ allowed_params = build_permitted_keys(param.children)
53
+
42
54
  if param.required?
43
- nested = params.expect(param.name => build_permitted_keys(param.children)).to_h.symbolize_keys
55
+ nested = params.expect(param.name => allowed_params).to_h.symbolize_keys
44
56
  hash[param.name.to_sym] = nested
45
57
  else
46
- nested = params.permit(param.name => build_permitted_keys(param.children)).to_h.symbolize_keys
58
+ nested = params.permit(param.name => allowed_params).to_h.symbolize_keys
47
59
  hash.merge!(nested)
48
60
  end
49
61
  else
@@ -60,6 +72,10 @@ module ApiRegulator
60
72
  params.map do |param|
61
73
  if param.children.any?
62
74
  { param.name.to_sym => build_permitted_keys(param.children) }
75
+ elsif param.type == :array
76
+ { param.name.to_sym => [] }
77
+ elsif param.type == :object
78
+ { param.name.to_sym => {} }
63
79
  else
64
80
  param.name.to_sym
65
81
  end
@@ -124,6 +124,11 @@ module ApiRegulator
124
124
  return
125
125
  end
126
126
 
127
+ if max = param.options.dig(:length, :maximum)
128
+ errors.add(attribute, "must have a max size of #{max}") if raw_value.length > max
129
+ return
130
+ end
131
+
127
132
  raw_value.each_with_index do |value, index|
128
133
  unless value.is_a?(Hash) || value.is_a?(ActionController::Parameters)
129
134
  errors.add("#{attribute}[#{index}]", "must be a hash")
@@ -1,3 +1,3 @@
1
1
  module ApiRegulator
2
- VERSION = "0.1.22"
2
+ VERSION = "0.1.24"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api-regulator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.22
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geoff Massanek
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-02-26 00:00:00.000000000 Z
11
+ date: 2025-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport