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 +4 -4
- data/lib/kapellmeister/requests_extension.rb +26 -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: 93fe2a387a68b2a5faf9b507a8cc7e8ce1f43623e6b65e2fa62823acb7ac6f2f
|
4
|
+
data.tar.gz: cdc95e84692e828f107c82c0b6ea1b403dbe49b514cc64a6a7eae3e8486cd2d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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.
|
89
|
+
required_keys = query.map(&:to_sym)
|
67
90
|
|
68
91
|
from_data = data.slice(*required_keys)
|
69
92
|
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.5
|
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
|