waithook 0.4.2 → 0.4.3
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 -0
- data/Gemfile.lock +2 -0
- data/lib/waithook/version.rb +1 -1
- data/lib/waithook.rb +21 -7
- data/tests/waithook_test.rb +14 -0
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1f0cc2d5d5ec7b85af2b2d46e1fb0d027e44f59280383144852cd977ef7476e
|
4
|
+
data.tar.gz: 3b91c47c92011bb8ffdf2d6178f4e3b6634a276e3bea95038f81938f787f1a5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd53a11900c20386e09d9eaf95f59e8ff787063844367d3d49b2bd374b760c1ab967e022d8d195e10d79c2e44381b1fbc7dbdf34417d49ca93b7cd8e6b74f542
|
7
|
+
data.tar.gz: 17249a6bdddb4e9d24a441ceb68273f81649f8a1cf00514bc51464cb284f5291ba1d4030b53542981ebb702e29bb2d2ffbd4f9fbc3300506758441e658cbd4ba
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -11,6 +11,7 @@ GEM
|
|
11
11
|
public_suffix (>= 2.0.2, < 7.0)
|
12
12
|
ansi (1.5.0)
|
13
13
|
builder (3.3.0)
|
14
|
+
coderay (1.1.3)
|
14
15
|
excon (0.112.0)
|
15
16
|
minitest (5.25.1)
|
16
17
|
minitest-reporters (1.7.1)
|
@@ -28,6 +29,7 @@ PLATFORMS
|
|
28
29
|
|
29
30
|
DEPENDENCIES
|
30
31
|
addressable
|
32
|
+
coderay
|
31
33
|
excon
|
32
34
|
minitest-reporters
|
33
35
|
rake
|
data/lib/waithook/version.rb
CHANGED
data/lib/waithook.rb
CHANGED
@@ -150,7 +150,11 @@ class Waithook
|
|
150
150
|
Timeout.timeout(timeout) do
|
151
151
|
while true
|
152
152
|
_, data = @client.wait_message
|
153
|
-
webhook = Webhook.new(
|
153
|
+
webhook = Webhook.new(
|
154
|
+
data,
|
155
|
+
logger: logger,
|
156
|
+
forward_options: (options[:forward_options] || {}).merge(@options[:forward_options] || {})
|
157
|
+
)
|
154
158
|
if @filter && @filter.call(webhook) || !@filter
|
155
159
|
@messages << webhook
|
156
160
|
return webhook
|
@@ -184,7 +188,7 @@ class Waithook
|
|
184
188
|
# Raw message from waithook server
|
185
189
|
attr_reader :message
|
186
190
|
|
187
|
-
def initialize(payload, logger
|
191
|
+
def initialize(payload, logger: nil, forward_options: {})
|
188
192
|
@message = payload
|
189
193
|
data = JSON.parse(@message)
|
190
194
|
@url = data['url']
|
@@ -192,9 +196,17 @@ class Waithook
|
|
192
196
|
@body = data['body']
|
193
197
|
@method = data['method']
|
194
198
|
@logger = logger
|
199
|
+
@forward_options = forward_options
|
195
200
|
end
|
196
201
|
|
197
|
-
def pretty_print
|
202
|
+
def pretty_print(pp_arg = nil, *args)
|
203
|
+
return super if pp_arg && defined?(super) # method from 'pp' library has same name
|
204
|
+
|
205
|
+
if !@body
|
206
|
+
@logger&.debug("Error: Waithook::Webhook has no @body")
|
207
|
+
return @message
|
208
|
+
end
|
209
|
+
|
198
210
|
if @body.start_with?('{') && @body.end_with?('}') || @body.start_with?('[') && @body.end_with?(']')
|
199
211
|
begin
|
200
212
|
body_data = JSON.parse(body)
|
@@ -206,15 +218,15 @@ class Waithook
|
|
206
218
|
require 'coderay'
|
207
219
|
pretty_body = CodeRay.scan(pretty_body, :json).term
|
208
220
|
rescue => error
|
209
|
-
logger&.debug("Error while trying to use CodeRay: #{error.message}")
|
221
|
+
@logger&.debug("Error while trying to use CodeRay: #{error.message}")
|
210
222
|
end
|
211
223
|
return "#{JSON.pretty_generate(data_without_body)}\nBody:\n#{pretty_body}"
|
212
224
|
rescue JSON::ParserError => error
|
213
|
-
logger&.debug("Error while parsing json body: #{error.message}")
|
225
|
+
@logger&.debug("Error while parsing json body: #{error.message}")
|
214
226
|
end
|
215
227
|
end
|
216
228
|
|
217
|
-
return message
|
229
|
+
return @message
|
218
230
|
end
|
219
231
|
|
220
232
|
# Returns Hash.
|
@@ -236,7 +248,8 @@ class Waithook
|
|
236
248
|
uri = URI.parse(url)
|
237
249
|
response = nil
|
238
250
|
|
239
|
-
|
251
|
+
http_options = {use_ssl: uri.scheme == 'https'}.merge(@forward_options || {})
|
252
|
+
Net::HTTP.start(uri.host, uri.port, http_options) do |http|
|
240
253
|
http_klass = case method
|
241
254
|
when "GET" then Net::HTTP::Get
|
242
255
|
when "POST" then Net::HTTP::Post
|
@@ -267,3 +280,4 @@ class Waithook
|
|
267
280
|
end
|
268
281
|
end
|
269
282
|
end
|
283
|
+
|
data/tests/waithook_test.rb
CHANGED
@@ -55,6 +55,20 @@ describe "Waithook" do
|
|
55
55
|
assert_equal("POST", webhook.method)
|
56
56
|
end
|
57
57
|
|
58
|
+
it "should use forward_options in request" do
|
59
|
+
waithook = default_client(forward_options: {write_timeout: :aaa, local_host: "--11"})
|
60
|
+
|
61
|
+
message = {'my_data' => true}
|
62
|
+
|
63
|
+
Excon.post("http://#{HOST}:#{PORT}/my-super-test", body: JSON.generate(message))
|
64
|
+
|
65
|
+
forward_error = begin
|
66
|
+
waithook.forward_to("http://#{HOST}:#{PORT}/my-super-test2")
|
67
|
+
rescue => e; e end
|
68
|
+
assert_equal(forward_error.class, Socket::ResolutionError)
|
69
|
+
assert_includes(forward_error.message, "getaddrinfo: nodename nor servname provided, or not known")
|
70
|
+
end
|
71
|
+
|
58
72
|
it "should have trace log level" do
|
59
73
|
out, err = capture_io do
|
60
74
|
default_client(logger_level: :trace, logger: true)
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: waithook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Evstigneev
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-03-10 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: websocket
|
@@ -55,7 +54,6 @@ homepage: https://github.com/paxa/waithook-ruby
|
|
55
54
|
licenses:
|
56
55
|
- MIT
|
57
56
|
metadata: {}
|
58
|
-
post_install_message:
|
59
57
|
rdoc_options: []
|
60
58
|
require_paths:
|
61
59
|
- lib
|
@@ -70,8 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
68
|
- !ruby/object:Gem::Version
|
71
69
|
version: '0'
|
72
70
|
requirements: []
|
73
|
-
rubygems_version: 3.5
|
74
|
-
signing_key:
|
71
|
+
rubygems_version: 3.6.5
|
75
72
|
specification_version: 4
|
76
73
|
summary: HTTP to WebSocket transmitting client
|
77
74
|
test_files: []
|