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 +4 -4
- data/lib/kapellmeister/requests_extension.rb +31 -3
- data/lib/kapellmeister/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe79b6fb67ba56c68ef8f1ae0c8f617856027bd63092193f32c11ced913db7f8
|
4
|
+
data.tar.gz: 80f2ff06ffcb6b91da5610162d52a5c8648d60a0d22991ffe90a175998424bf3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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.
|
94
|
+
required_keys = query.map(&:to_sym)
|
67
95
|
|
68
96
|
from_data = data.slice(*required_keys)
|
69
97
|
data.except!(*required_keys)
|
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
|
+
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:
|
11
|
+
date: 2023-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-schema
|