miscellany 0.1.30 → 0.1.31

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: 72845736f45daa922b30d36b4adb18b1fc36b0e568f3b2d59c9c7c3194c18e28
4
- data.tar.gz: d4e402081459c3691240d47df56bd2c3ee82ea7fa9b543f058c2540c63b24408
3
+ metadata.gz: 2e8daf2119169fb42523d39ed55e69d90dc43db0bed0178971b60aa279797a3e
4
+ data.tar.gz: 96716ff17fbc11304ead76e6c294888db6b48fad5f3fa7ea214b6fb445870260
5
5
  SHA512:
6
- metadata.gz: '07283382e3066d8ae5e787226b3f4f4b424fd1a9069aefab6da9afe075f5ab5870794294d11bb7ccd7770d4168a3f57a59316b90441cea8e9854023799bfb6bc'
7
- data.tar.gz: a2ee658dbd4fe63aa454fd3adfa5392c5447b2e0da04cf258230cfe2433958e06288f2db28d75d7ad3c24ffb75272f328ba86d8673b5b6f693e09ecf9f353635
6
+ metadata.gz: c0320bcd305fbbaa8588c705293ae81be13cd20e2b41cad37aaa56e4fc84c1a7414a79bc15f3d22337bc376307a56064df26d238a979f4a0da5edfd1567dfd4f
7
+ data.tar.gz: 6f6f45648681860132544efc225e35d0575c7cf6f8a0b478ade5fe4defab8be9a498dd26d4af3f4159c5737146cee5332c31d7c912b10a1c083c126205f87423
@@ -4,32 +4,34 @@ module Miscellany
4
4
 
5
5
  # This hackery allows using JSON params along with file-uploads
6
6
  # On the frontend, use MultiPart form data, and add _parameters as an entry
7
- def params
8
- if @_params.nil?
9
- params_obj = @_params = super
10
- phash = params_obj.instance_variable_get(:@parameters)
11
- if phash[:_parameters].present?
12
- json_layer = JSON.parse(phash.delete(:_parameters))
13
- shared_keys = phash.keys & json_layer.keys
14
- main_layer = phash.slice(*shared_keys)
15
- merge_params(json_layer, main_layer)
16
- phash.merge!(json_layer)
17
- end
7
+ def process_action(*)
8
+ json_param = request.request_parameters[:_parameters]
9
+ if json_param.present?
10
+ parsed = JSON.parse(json_param)
11
+ overlapping_params = request.request_parameters.slice(*(request.request_parameters.keys & parsed.keys))
12
+ _merge_json_params(parsed, overlapping_params)
13
+
14
+ request.parameters.merge! parsed
15
+ request.request_parameters.merge! parsed
18
16
  end
19
- @_params
17
+ super
20
18
  end
21
19
 
22
20
  private
23
21
 
24
- def merge_params(base, layer)
22
+ def _wrapper_enabled?
23
+ (_wrapper_options.format.include?(:json) && request.request_parameters[:_parameters].present?) || super
24
+ end
25
+
26
+ def _merge_json_params(base, layer)
25
27
  if base.is_a?(Array) && (layer.is_a?(Hash) || layer.is_a?(Array))
26
28
  base.each_with_index.map do |v, i|
27
29
  over_key = layer.is_a?(Hash) ? i.to_s : i
28
- merge_params(v, layer[over_key])
30
+ _merge_json_params(v, layer[over_key])
29
31
  end
30
32
  elsif base.is_a?(Hash) && layer.is_a?(Hash)
31
33
  base.each do |k, v|
32
- base[k] = merge_params(v, layer[k])
34
+ base[k] = _merge_json_params(v, layer[k])
33
35
  end
34
36
  layer.merge(base)
35
37
  else
@@ -1,3 +1,3 @@
1
1
  module Miscellany
2
- VERSION = "0.1.30".freeze
2
+ VERSION = "0.1.31".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miscellany
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.30
4
+ version: 0.1.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan Knapp