kapellmeister 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5fd7d3c5d2244764964d2ceee2e2bf0400baa2c8aeac18a8bc49ac2e7aed5fc7
4
- data.tar.gz: 1fa8a6ba63c7a40dd294fb0ee38ff9fb2f4c1532d3d56311b00647eea53dd6ab
3
+ metadata.gz: 93fe2a387a68b2a5faf9b507a8cc7e8ce1f43623e6b65e2fa62823acb7ac6f2f
4
+ data.tar.gz: cdc95e84692e828f107c82c0b6ea1b403dbe49b514cc64a6a7eae3e8486cd2d8
5
5
  SHA512:
6
- metadata.gz: 9a52a16e343a393a17c7bf7568f638ddd3a1b43cc992772ba89ce658174d73e08c24aae9ef554e03e91a9c1282515acf157f6a3002c6e4421dea333f4004458c
7
- data.tar.gz: 499902ae0d25dd3623b6f8790a87ada07464219678bc60c6a82d1b3cd8233f5991728881e744373d9fc186d7832f65ec25eb1de6b1a08c28d5e64bc3f5027fea
6
+ metadata.gz: b8b0496064d754c153b15502c47815bd54684616acdb8da9367e4dd06b493d84ed78a449cfe69e312cf91c4d923ebd49c9e79bb3f8ade21137d9c8948496aec4
7
+ data.tar.gz: 444d6951d7c13ea2c2fe5c71ce0662bfb632e45802aee5fcbc94c776f2c507e4db0d505cfe539733939695ca3265ee796d203d50d020985294e2dfe1795dbbfe
@@ -15,9 +15,9 @@ module Kapellmeister::RequestsExtension
15
15
  return ::Kapellmeister::Base.routes_scheme_parse(mock)
16
16
  end
17
17
 
18
- data = query_params.compact_blank.merge(data) if data.is_a?(Hash)
18
+ data, query_keys = *parsed_query(query_params, data)
19
+ valid_query?(data, query_keys)
19
20
  valid_body?(data, body)
20
- valid_query?(data, query_params)
21
21
 
22
22
  full_path = generate_full_path(path, data)
23
23
 
@@ -32,6 +32,29 @@ module Kapellmeister::RequestsExtension
32
32
  end
33
33
  end
34
34
 
35
+ def parsed_query(params, data)
36
+ return [data, []] if params.blank?
37
+
38
+ hash_data, filtered_query = *split_hashes(params)
39
+ required_empty_query, default_data = *hash_data.partition { |elem| elem.values.compact_blank.blank? }
40
+ data = Hash[filtered_query.zip].compact_blank.merge(data) if data.is_a?(Hash)
41
+ optional_data, default_data = *split_optional(default_data)
42
+ data = data.merge(default_data) unless data.blank? && default_data.blank?
43
+
44
+ [data, filtered_query + required_empty_query.map(&:keys).flatten + default_data.keys.flatten]
45
+ end
46
+
47
+ def split_hashes(params)
48
+ case params
49
+ when Array then params.compact_blank.partition { |elem| elem.is_a?(Hash) }
50
+ when Hash then [[params], []]
51
+ end
52
+ end
53
+
54
+ def split_optional(params)
55
+ params.inject(:merge).partition { |key, value| key == :optional }.map(&:to_h)
56
+ end
57
+
35
58
  def generate_full_path(original_path, data)
36
59
  path = generate_path(original_path, data)
37
60
  query = data.delete(:query_params)&.to_query
@@ -63,7 +86,7 @@ end
63
86
  def valid_query?(data, query)
64
87
  return if query.blank?
65
88
 
66
- required_keys = query.keys
89
+ required_keys = query.map(&:to_sym)
67
90
 
68
91
  from_data = data.slice(*required_keys)
69
92
  data.except!(*required_keys)
@@ -1,3 +1,3 @@
1
1
  module Kapellmeister
2
- VERSION = '0.9.4'.freeze
2
+ VERSION = '0.9.5'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kapellmeister
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - DarkWater
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-25 00:00:00.000000000 Z
11
+ date: 2023-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-schema