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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3df6454a557d19f38729b89f1874b43111ab2d367c9f6f018064ad012d3ff2a
4
- data.tar.gz: f933b2e75524e3301afbe50c8e56bbb525cea7a5503a15071cfad2ab4bd7ff59
3
+ metadata.gz: b1f0cc2d5d5ec7b85af2b2d46e1fb0d027e44f59280383144852cd977ef7476e
4
+ data.tar.gz: 3b91c47c92011bb8ffdf2d6178f4e3b6634a276e3bea95038f81938f787f1a5c
5
5
  SHA512:
6
- metadata.gz: 8f6403f65b5bf735376deea1d9eb4157b66d87428e1c13717c71b80045bfa898487863e15d9a206c59575652cfaa6003dc14885746f1dcd22a2f6ebec03eac1a
7
- data.tar.gz: b7f95a852f39039a4832f5a0f5889163e92fb855ade1b7e33a9c5b3ad5dbd0d587f393f8925156d5e8102f055eef0f7843e93be2f5122c1d9934bdbfca0ba70d
6
+ metadata.gz: dd53a11900c20386e09d9eaf95f59e8ff787063844367d3d49b2bd374b760c1ab967e022d8d195e10d79c2e44381b1fbc7dbdf34417d49ca93b7cd8e6b74f542
7
+ data.tar.gz: 17249a6bdddb4e9d24a441ceb68273f81649f8a1cf00514bc51464cb284f5291ba1d4030b53542981ebb702e29bb2d2ffbd4f9fbc3300506758441e658cbd4ba
data/Gemfile CHANGED
@@ -4,5 +4,6 @@ gem 'rake'
4
4
  gem 'minitest-reporters'
5
5
  gem 'excon'
6
6
  gem 'addressable'
7
+ gem 'coderay'
7
8
 
8
9
  gemspec
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
@@ -1,3 +1,3 @@
1
1
  class Waithook
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3"
3
3
  end
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(data, logger)
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 = nil)
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
- Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
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
+
@@ -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.2
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: 2024-10-29 00:00:00.000000000 Z
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.11
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: []