salestation 4.5.0 → 5.0.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: 50948c2e3f36bfe0779cb2458cf42cc6d7dd8e9b38b77a00e7bf0e975f7f2140
4
- data.tar.gz: 490a6207820bdc32b745e1d3d6c9cbbdb33e547783f557aa14ff89791b351173
3
+ metadata.gz: 63f86b3537b2db5857f54ef439442a3ca0ef1a4f078d602989783814fd70b718
4
+ data.tar.gz: 2836da19672da049c461769c8482e4c9cab2e3ce6d6292293051639c0a0cb8e7
5
5
  SHA512:
6
- metadata.gz: d99f0b753951b98f0905d2084d432071d33d2a2370ae07726225db8d90f8dc8d5bdb6acc453ff2654a2bc81dc23ba27f125202eb1bbc8adceb09faca73638755
7
- data.tar.gz: 2d41a2673bc8a59fb78e97ecff19b4c58ed11c01e66111a538ee3e8c1d5c18b9ad504437368a5a5538e7cfb879efe94b6ef19678c8977348c5dbecc62b8b9489
6
+ metadata.gz: dc79ff3f36806274195543e4fc0e13f27d098d1239b3c0706cd6a7ed3f643a764a71b2b34426ccfbe19ebc9f29b0018a8c8619a1c2f9729c180df70a2b640906
7
+ data.tar.gz: 4b4d65d3e6158c9ff0025f2e5548b650dab2d0ca3bf4c5dca3f51b11943be552c44eadda05cb5830962157ef2d1200e8067b731eebbc74bb501d83e8a39d7753
@@ -5,13 +5,29 @@ module Salestation
5
5
  module InputVerification
6
6
  def verify_input(schema)
7
7
  -> (request) do
8
- result = schema.call(request.input)
9
- if result.success?
10
- request.replace_input(result.output)
8
+ input = request.input
9
+ result = schema.call(input)
10
+
11
+ dry_validation_version = Gem.loaded_specs['dry-validation'].version
12
+ if dry_validation_version < Gem::Version.new('1.0')
13
+ Mapper.from_dry_validation_result(result.output, result.errors, custom_error_map)
14
+ if result.success?
15
+ request.replace_input(result.output)
16
+ else
17
+ Deterministic::Result::Failure(
18
+ Errors::InvalidInput.new(errors: result.errors, hints: result.hints)
19
+ )
20
+ end
21
+ elsif dry_validation_version <= Gem::Version.new('1.8')
22
+ if result.success?
23
+ request.replace_input(input)
24
+ else
25
+ Deterministic::Result::Failure(
26
+ Errors::InvalidInput.new(errors: result.errors.to_h, hints: result.hints.to_h)
27
+ )
28
+ end
11
29
  else
12
- Deterministic::Result::Failure(
13
- Errors::InvalidInput.new(errors: result.errors, hints: result.hints)
14
- )
30
+ raise 'Unsupported dry-validation version'
15
31
  end
16
32
  end
17
33
  end
@@ -197,12 +197,26 @@ module Salestation
197
197
  when Symbol
198
198
  stringified_key = filter.to_s
199
199
  extracted_data[filter] = request_hash[stringified_key] if request_hash.key?(stringified_key)
200
+ if extracted_data[filter].is_a?(Array)
201
+ extracted_data[filter] = extracted_data[filter].map{ |hash|
202
+ if hash.is_a?(Hash)
203
+ hash.transform_keys(&:to_sym) if hash.is_a?(Hash)
204
+ else
205
+ hash
206
+ end
207
+ }
208
+ end
200
209
  when Hash
201
210
  filter.each do |key, nested_filters|
202
211
  stringified_key = key.to_s
203
212
  if request_hash.key?(stringified_key)
204
213
  value = request_hash.fetch(stringified_key)
205
- extracted_data[key] = value.nil? ? nil : extract(nested_filters, value)
214
+ extracted_data[key] =
215
+ if !value.is_a?(Hash)
216
+ value
217
+ else
218
+ extract(nested_filters, value)
219
+ end
206
220
  end
207
221
  end
208
222
  end
@@ -219,17 +233,22 @@ module Salestation
219
233
  # Extracts and symbolizes params from request body
220
234
  #
221
235
  # @example
222
- # extractor = BodyParamExtractor[:x, :y, {foo: [:bar, :baz]}]
236
+ # extractor = BodyParamExtractor[:x, :y, {foo: [:bar, :baz]}, :aaa]
223
237
  # input = {
224
238
  # 'x' => '1',
225
239
  # 'y' => '2',
226
240
  # 'z' => '3',
227
241
  # 'foo' => {
228
242
  # 'bar' => 'qq'
229
- # }
243
+ # },
244
+ # 'aaa' => [
245
+ # {
246
+ # 'bb' => 'cc'
247
+ # }
248
+ # ]
230
249
  # }
231
250
  # # rack_request is Rack::Request with 'rack.request.form_hash' set to input
232
- # extractor.call(rack_request).value #=> {x: 1, y: 2, foo: {bar: 'qq}}
251
+ # extractor.call(rack_request).value #=> {x: 1, y: 2, foo: {bar: 'qq'}, aaa: [{bb: 'cc'}]}
233
252
  #
234
253
  class BodyParamExtractor
235
254
  def self.[](*filters)
data/salestation.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "salestation"
7
- spec.version = "4.5.0"
7
+ spec.version = "5.0.0"
8
8
  spec.authors = ["Glia TechMovers"]
9
9
  spec.email = ["techmovers@glia.com"]
10
10
 
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "rspec", "~> 3.0"
25
25
  spec.add_development_dependency "pry", "~> 0.10.4"
26
26
  spec.add_development_dependency "glia-errors", "~> 0.11.4"
27
- spec.add_development_dependency "dry-validation", "~> 1.6.0"
27
+ spec.add_development_dependency "dry-validation", "~> 1.7.0"
28
28
 
29
29
  spec.add_dependency 'deterministic'
30
30
  spec.add_dependency 'dry-struct'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: salestation
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.5.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Glia TechMovers
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-08 00:00:00.000000000 Z
11
+ date: 2022-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 1.6.0
89
+ version: 1.7.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 1.6.0
96
+ version: 1.7.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: deterministic
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -189,7 +189,7 @@ homepage: ''
189
189
  licenses:
190
190
  - MIT
191
191
  metadata: {}
192
- post_install_message:
192
+ post_install_message:
193
193
  rdoc_options: []
194
194
  require_paths:
195
195
  - lib
@@ -204,8 +204,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
204
204
  - !ruby/object:Gem::Version
205
205
  version: '0'
206
206
  requirements: []
207
- rubygems_version: 3.0.6
208
- signing_key:
207
+ rubygems_version: 3.1.6
208
+ signing_key:
209
209
  specification_version: 4
210
210
  summary: ''
211
211
  test_files: []