kapellmeister 0.9.4 → 0.9.5

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: 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