zleb 0.1.6 → 0.1.7
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 +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +20 -13
- data/lib/zleb/plugins/method_route.rb +49 -12
- data/lib/zleb/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: 057ee32150e2ed7a9b7f3dc65e63ac99a6f17dd4310afab7c3319184c658921d
|
|
4
|
+
data.tar.gz: 44b42681e903f182c241eb7f21fc4fb3a8d80158410a64f5644e37c8f8765cb5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ac766a2c7e331a771517b91ac6874b4ce790bdec5e61e0a226e9deced9e7ca7c0546186e46c7837e7d53e0c16492034d9b2c93a038611777122b9f3a14a080f6
|
|
7
|
+
data.tar.gz: e14a973bbbf5b79d6e747ed5bd9adaa160fe148d3d6bf4c7182c692f96304967826086a9c6a2ed498c3d9311bf7bbf8b7fc97deb0d32a00c463dba325c0896ea
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
zleb (0.1.
|
|
4
|
+
zleb (0.1.7)
|
|
5
5
|
awrence (~> 1.2, >= 1.2.1)
|
|
6
6
|
concurrent-ruby
|
|
7
7
|
dry-container (~> 0.7)
|
|
@@ -14,9 +14,10 @@ PATH
|
|
|
14
14
|
semantic_logger (~> 4.7, >= 4.7.4)
|
|
15
15
|
|
|
16
16
|
GEM
|
|
17
|
-
remote: https://
|
|
17
|
+
remote: https://mirrors.tuna.tsinghua.edu.cn/rubygems/
|
|
18
18
|
specs:
|
|
19
19
|
awrence (1.2.1)
|
|
20
|
+
bigdecimal (4.1.0)
|
|
20
21
|
bigdecimal (4.1.0-java)
|
|
21
22
|
concurrent-ruby (1.3.6)
|
|
22
23
|
diff-lcs (1.6.2)
|
|
@@ -25,11 +26,11 @@ GEM
|
|
|
25
26
|
zeitwerk (~> 2.6)
|
|
26
27
|
dry-container (0.11.0)
|
|
27
28
|
concurrent-ruby (~> 1.0)
|
|
28
|
-
dry-core (1.
|
|
29
|
+
dry-core (1.1.0)
|
|
29
30
|
concurrent-ruby (~> 1.0)
|
|
30
31
|
logger
|
|
31
32
|
zeitwerk (~> 2.6)
|
|
32
|
-
dry-inflector (1.
|
|
33
|
+
dry-inflector (1.2.0)
|
|
33
34
|
dry-initializer (3.2.0)
|
|
34
35
|
dry-logic (1.6.0)
|
|
35
36
|
bigdecimal
|
|
@@ -44,8 +45,7 @@ GEM
|
|
|
44
45
|
dry-logic (>= 1.4, < 2)
|
|
45
46
|
dry-types (>= 1.7, < 2)
|
|
46
47
|
zeitwerk (~> 2.6)
|
|
47
|
-
dry-types (1.
|
|
48
|
-
bigdecimal (>= 3.0)
|
|
48
|
+
dry-types (1.7.1)
|
|
49
49
|
concurrent-ruby (~> 1.0)
|
|
50
50
|
dry-core (~> 1.0)
|
|
51
51
|
dry-inflector (~> 1.0)
|
|
@@ -58,8 +58,11 @@ GEM
|
|
|
58
58
|
dry-schema (>= 1.12, < 2)
|
|
59
59
|
zeitwerk (~> 2.6)
|
|
60
60
|
logger (1.7.0)
|
|
61
|
+
nio4r (2.7.5)
|
|
61
62
|
nio4r (2.7.5-java)
|
|
62
63
|
plissken (1.4.1)
|
|
64
|
+
puma (6.6.1)
|
|
65
|
+
nio4r (~> 2.0)
|
|
63
66
|
puma (6.6.1-java)
|
|
64
67
|
nio4r (~> 2.0)
|
|
65
68
|
rack (3.2.5)
|
|
@@ -84,10 +87,11 @@ GEM
|
|
|
84
87
|
rspec-support (3.13.7)
|
|
85
88
|
semantic_logger (4.17.0)
|
|
86
89
|
concurrent-ruby (~> 1.0)
|
|
87
|
-
zeitwerk (2.
|
|
90
|
+
zeitwerk (2.6.18)
|
|
88
91
|
|
|
89
92
|
PLATFORMS
|
|
90
93
|
universal-java
|
|
94
|
+
x86_64-linux
|
|
91
95
|
|
|
92
96
|
DEPENDENCIES
|
|
93
97
|
rack-test
|
|
@@ -97,21 +101,24 @@ DEPENDENCIES
|
|
|
97
101
|
|
|
98
102
|
CHECKSUMS
|
|
99
103
|
awrence (1.2.1) sha256=dd1d214c12a91f449d1ef81d7ee3babc2816944e450752e7522c65521872483e
|
|
104
|
+
bigdecimal (4.1.0) sha256=6dc07767aa3dc456ccd48e7ae70a07b474e9afd7c5bc576f80bd6da5c8dd6cae
|
|
100
105
|
bigdecimal (4.1.0-java) sha256=1623930ea8e5187d4229f2857f129a83247ccd1cade71a4bc7d8bf3b41bbba59
|
|
101
106
|
concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
|
|
102
107
|
diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
|
|
103
108
|
dry-configurable (1.3.0) sha256=882d862858567fc1210d2549d4c090f34370fc1bb7c5c1933de3fe792e18afa8
|
|
104
109
|
dry-container (0.11.0) sha256=23be9381644d47343f3bf13b082b4255994ada0bfd88e0737eaaadc99d035229
|
|
105
|
-
dry-core (1.
|
|
106
|
-
dry-inflector (1.
|
|
110
|
+
dry-core (1.1.0) sha256=0903821a9707649a7da545a2cd88e20f3a663ab1c5288abd7f914fa7751ab195
|
|
111
|
+
dry-inflector (1.2.0) sha256=22f5d0b50fd57074ae57e2ca17e3b300e57564c218269dcf82ff3e42d3f38f2e
|
|
107
112
|
dry-initializer (3.2.0) sha256=37d59798f912dc0a1efe14a4db4a9306989007b302dcd5f25d0a2a20c166c4e3
|
|
108
113
|
dry-logic (1.6.0) sha256=da6fedbc0f90fc41f9b0cc7e6f05f5d529d1efaef6c8dcc8e0733f685745cea2
|
|
109
114
|
dry-schema (1.13.3) sha256=ff0ec847c7986ddb76145f9426ddacaa68c28b170c0f626fb8d30fcb431393e3
|
|
110
|
-
dry-types (1.
|
|
115
|
+
dry-types (1.7.1) sha256=12165841145a18dd22151f143707b90c8093f71e5ae06ee0f2301f5321f8cdb8
|
|
111
116
|
dry-validation (1.10.0) sha256=352afd75629772570f54f03d3e7847ac345e628bf345874d49f1dabacc8ceaac
|
|
112
117
|
logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
|
|
118
|
+
nio4r (2.7.5) sha256=6c90168e48fb5f8e768419c93abb94ba2b892a1d0602cb06eef16d8b7df1dca1
|
|
113
119
|
nio4r (2.7.5-java) sha256=d14779d2a9b012ec0148a53344fbb2ed2a3c4d90c5dd923bf281135ab983b2c9
|
|
114
120
|
plissken (1.4.1) sha256=d8cf78eefb50e4109130e476f599e6f9c0912b7d8733fe167f8cff9dcf7ae50d
|
|
121
|
+
puma (6.6.1) sha256=b9b56e4a4ea75d1bfa6d9e1972ee2c9f43d0883f011826d914e8e37b3694ea1e
|
|
115
122
|
puma (6.6.1-java) sha256=b5384f7320e3ceb5aa41c729f5ebbde360394aa8f77fcb82a092d63f8512c9c4
|
|
116
123
|
rack (3.2.5) sha256=4cbd0974c0b79f7a139b4812004a62e4c60b145cba76422e288ee670601ed6d3
|
|
117
124
|
rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463
|
|
@@ -124,8 +131,8 @@ CHECKSUMS
|
|
|
124
131
|
rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
|
|
125
132
|
rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
|
|
126
133
|
semantic_logger (4.17.0) sha256=c54b60d8596abe2e22bd4f20648d4f6c46e4287fba357779c7932335c8d130e9
|
|
127
|
-
zeitwerk (2.
|
|
128
|
-
zleb (0.1.
|
|
134
|
+
zeitwerk (2.6.18) sha256=bd2d213996ff7b3b364cd342a585fbee9797dbc1c0c6d868dc4150cc75739781
|
|
135
|
+
zleb (0.1.7)
|
|
129
136
|
|
|
130
137
|
BUNDLED WITH
|
|
131
|
-
|
|
138
|
+
2.5.23
|
|
@@ -4,18 +4,21 @@ class Roda
|
|
|
4
4
|
module RodaPlugins
|
|
5
5
|
module MethodRoute
|
|
6
6
|
|
|
7
|
+
SENSITIVE_KEYS = %i[password password_confirmation secret token access_token authorization api_key].freeze
|
|
7
8
|
|
|
8
9
|
def self.load_dependencies(app, _opts = OPTS)
|
|
9
10
|
app.plugin :hash_routes
|
|
10
11
|
app.plugin :json_parser
|
|
11
12
|
end
|
|
12
|
-
|
|
13
|
+
|
|
13
14
|
module InstanceMethods
|
|
14
15
|
include SemanticLogger::Loggable
|
|
15
|
-
|
|
16
|
+
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
module RequestMethods
|
|
20
|
+
include SemanticLogger::Loggable
|
|
21
|
+
|
|
19
22
|
def method_to(mod)
|
|
20
23
|
r_path = remaining_path
|
|
21
24
|
method_name = nil
|
|
@@ -25,7 +28,7 @@ class Roda
|
|
|
25
28
|
segments.shift
|
|
26
29
|
first_seg = segments.shift
|
|
27
30
|
first_seg[0] = first_seg[0].upcase
|
|
28
|
-
begin
|
|
31
|
+
begin
|
|
29
32
|
klass = mod.const_get(first_seg, false)
|
|
30
33
|
rescue NameError => e
|
|
31
34
|
return
|
|
@@ -33,20 +36,54 @@ class Roda
|
|
|
33
36
|
segments.unshift(request_method.downcase)
|
|
34
37
|
method_name = segments.join("_").to_sym
|
|
35
38
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
40
|
+
|
|
41
|
+
begin
|
|
42
|
+
processer = klass.new({request: self, response: response, headers: headers, params: params, scope: scope})
|
|
43
|
+
if processer.respond_to?(:init)
|
|
44
|
+
processer.init
|
|
45
|
+
end
|
|
46
|
+
if processer.respond_to?(method_name)
|
|
47
|
+
result = processer.send(method_name)
|
|
48
|
+
else
|
|
49
|
+
return
|
|
50
|
+
end
|
|
51
|
+
block_result(result)
|
|
52
|
+
rescue => e
|
|
53
|
+
duration_ms = ((Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time) * 1000).round(2)
|
|
54
|
+
logger.error("API #{request_method} #{r_path}",
|
|
55
|
+
controller: klass.name,
|
|
56
|
+
action: method_name,
|
|
57
|
+
params: filter_sensitive_params(params),
|
|
58
|
+
duration_ms: duration_ms,
|
|
59
|
+
exception: e
|
|
60
|
+
)
|
|
61
|
+
raise
|
|
44
62
|
end
|
|
45
|
-
|
|
63
|
+
|
|
64
|
+
duration_ms = ((Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time) * 1000).round(2)
|
|
65
|
+
status = response.status || 200
|
|
66
|
+
|
|
67
|
+
logger.info("API #{request_method} #{r_path}",
|
|
68
|
+
controller: klass.name,
|
|
69
|
+
action: method_name,
|
|
70
|
+
params: filter_sensitive_params(params),
|
|
71
|
+
status: status,
|
|
72
|
+
duration_ms: duration_ms
|
|
73
|
+
)
|
|
74
|
+
|
|
46
75
|
halt
|
|
47
76
|
end
|
|
48
77
|
end
|
|
49
78
|
|
|
79
|
+
private
|
|
80
|
+
|
|
81
|
+
def filter_sensitive_params(params_hash)
|
|
82
|
+
return params_hash unless params_hash.is_a?(Hash)
|
|
83
|
+
params_hash.each_with_object({}) do |(k, v), filtered|
|
|
84
|
+
filtered[k] = MethodRoute::SENSITIVE_KEYS.include?(k.to_sym) ? "[FILTERED]" : v
|
|
85
|
+
end
|
|
86
|
+
end
|
|
50
87
|
end
|
|
51
88
|
|
|
52
89
|
module ClassMethods
|
data/lib/zleb/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zleb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- saidev
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-06-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: roda
|