kapellmeister 0.9.4 → 0.9.6

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: fe79b6fb67ba56c68ef8f1ae0c8f617856027bd63092193f32c11ced913db7f8
4
+ data.tar.gz: 80f2ff06ffcb6b91da5610162d52a5c8648d60a0d22991ffe90a175998424bf3
5
5
  SHA512:
6
- metadata.gz: 9a52a16e343a393a17c7bf7568f638ddd3a1b43cc992772ba89ce658174d73e08c24aae9ef554e03e91a9c1282515acf157f6a3002c6e4421dea333f4004458c
7
- data.tar.gz: 499902ae0d25dd3623b6f8790a87ada07464219678bc60c6a82d1b3cd8233f5991728881e744373d9fc186d7832f65ec25eb1de6b1a08c28d5e64bc3f5027fea
6
+ metadata.gz: acfe492025285fe11843ba4bdd3a911f793ae3c980afb46281b9490df7096005f246f585722587d2103d1d56f9b4568aa3082392f29640fff61f35c5fd1926bb
7
+ data.tar.gz: 916c8280053a15b9fbccfc7ddab4941219d1309331b019e40879523fe0b05300ba802d5ad306e4492245a47871e919aca8c184f0cab17ad581d56fa24dfd18be
@@ -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,34 @@ 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) if !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
+ return [[], []] if params.blank?
49
+
50
+ case params
51
+ when Array then params.compact_blank.partition { |elem| elem.is_a?(Hash) }
52
+ when Hash then [[params], []]
53
+ else [[], []]
54
+ end
55
+ end
56
+
57
+ def split_optional(params)
58
+ return [{}, {}] if params.blank?
59
+
60
+ params.inject(:merge).partition { |key, _value| key == :optional }.map(&:to_h)
61
+ end
62
+
35
63
  def generate_full_path(original_path, data)
36
64
  path = generate_path(original_path, data)
37
65
  query = data.delete(:query_params)&.to_query
@@ -63,7 +91,7 @@ end
63
91
  def valid_query?(data, query)
64
92
  return if query.blank?
65
93
 
66
- required_keys = query.keys
94
+ required_keys = query.map(&:to_sym)
67
95
 
68
96
  from_data = data.slice(*required_keys)
69
97
  data.except!(*required_keys)
@@ -1,3 +1,3 @@
1
1
  module Kapellmeister
2
- VERSION = '0.9.4'.freeze
2
+ VERSION = '0.9.6'.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.6
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