action_webhook 1.2.0 → 1.2.1

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: 5fd47bb2e72c2bd12feab3682031b00603f271279b435eeb56b5a4e7dba6bccb
4
- data.tar.gz: a4e22834b739227926772b9b8d18f4dbc74c1d7f7fc06bcbc1174707a306897d
3
+ metadata.gz: f4e6800e63275b752cf3ac373b19b461e87800f794b7c0c547329537a993dc84
4
+ data.tar.gz: b1f879d8133a5b36fed56f01f689149cfb677d2f45af54b1b3c6bc2f8ad1216d
5
5
  SHA512:
6
- metadata.gz: dd8df71521ef095e6f52aad36daacb1e518ec400a0cb1aa8919568dbe240731097679f18933bd9d30406d17a02685ffd79570189067e84405c80968c834de015
7
- data.tar.gz: f42e11c74f275f4206c992a9e96a6e3b37eb40ed4f53191dbbef2192c596a2f039c172bd9d888f33ae0c18b9dc504a25d40055f86fba847ba5188c4e578af672
6
+ metadata.gz: 6a7841d4ca8b3af923e88442b2ec1337598644008a244edfe089afdff178cfcfe9f7dc6b8301a51c03d145cd6501940a4ddf24eefc902f3c729f6c26c72240af
7
+ data.tar.gz: e415ec27166e44d35f05a1d28ace5aee7b7584545bce5521fd66f74370162ac69e8545281ca66bedb6add13f82e9a9048bd15c3b670587b651bdd3b4223cb99f
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionWebhook
2
4
  # Base class for defining and delivering webhooks
3
5
  #
@@ -8,6 +10,11 @@ module ActionWebhook
8
10
  # 1. Hash format: { 'Authorization' => 'Bearer token', 'Content-Type' => 'application/json' }
9
11
  # 2. Array format: [{ 'key' => 'Authorization', 'value' => 'Bearer token' }, { 'key' => 'Content-Type', 'value' => 'application/json' }]
10
12
  #
13
+ # Debug mode can be enabled to log header processing and request details:
14
+ # class MyWebhook < ActionWebhook::Base
15
+ # self.debug_headers = true
16
+ # end
17
+ #
11
18
  # Example:
12
19
  #
13
20
  # class UserWebhook < ActionWebhook::Base
@@ -42,6 +49,7 @@ module ActionWebhook
42
49
  #
43
50
  # class UserWebhook < ActionWebhook::Base
44
51
  # self.deliver_later_queue_name = 'webhooks'
52
+ # self.debug_headers = true # Enable header debugging
45
53
  #
46
54
  # def created(user)
47
55
  # @user = user
@@ -79,6 +87,9 @@ module ActionWebhook
79
87
  class_attribute :delivery_method, instance_writer: false, default: :deliver_now
80
88
  class_attribute :perform_deliveries, instance_writer: false, default: true
81
89
 
90
+ # Debug configuration
91
+ class_attribute :debug_headers, instance_writer: false, default: false
92
+
82
93
  # Retry configuration
83
94
  class_attribute :max_retries, instance_writer: false, default: 3
84
95
  class_attribute :retry_delay, instance_writer: false, default: 30.seconds
@@ -111,7 +122,11 @@ module ActionWebhook
111
122
  # Handle failed responses
112
123
  if failed_responses.any? && @attempts < self.class.max_retries
113
124
  # Extract failed webhook details for retry
114
- failed_webhook_details = failed_responses.map { |r| @webhook_details.find { |detail| detail[:url] == r[:url] } }.compact
125
+ failed_webhook_details = failed_responses.map do |r|
126
+ @webhook_details.find do |detail|
127
+ detail[:url] == r[:url]
128
+ end
129
+ end.compact
115
130
  retry_with_backoff(failed_webhook_details)
116
131
  elsif failed_responses.any?
117
132
  # All retries exhausted for failed URLs
@@ -274,9 +289,9 @@ module ActionWebhook
274
289
  next unless header_item.is_a?(Hash)
275
290
 
276
291
  # Handle string keys
277
- if header_item.key?('key') && header_item.key?('value')
278
- key = header_item['key']
279
- value = header_item['value']
292
+ if header_item.key?("key") && header_item.key?("value")
293
+ key = header_item["key"]
294
+ value = header_item["value"]
280
295
  acc[key.to_s] = value.to_s if key && value
281
296
  # Handle symbol keys
282
297
  elsif header_item.key?(:key) && header_item.key?(:value)
@@ -301,10 +316,26 @@ module ActionWebhook
301
316
  headers = default_headers.merge(processed_headers)
302
317
  headers["Content-Type"] = "application/json" unless headers.key?("Content-Type")
303
318
  headers["X-Webhook-Attempt"] = @attempts.to_s if @attempts.positive?
319
+
320
+ # Debug headers if enabled
321
+ if self.class.debug_headers
322
+ logger&.info("ActionWebhook Headers Debug:")
323
+ logger&.info(" Default headers: #{default_headers}")
324
+ logger&.info(" Processed headers: #{processed_headers}")
325
+ logger&.info(" Final headers: #{headers}")
326
+ end
327
+
304
328
  headers
305
329
  end
306
330
 
307
331
  def send_webhook_request(url, payload, headers)
332
+ if self.class.debug_headers
333
+ logger&.info("ActionWebhook Request Debug:")
334
+ logger&.info(" URL: #{url}")
335
+ logger&.info(" Headers: #{headers}")
336
+ logger&.info(" Payload size: #{payload.to_json.bytesize} bytes")
337
+ end
338
+
308
339
  HTTParty.post(url, body: payload.to_json, headers: headers, timeout: 10)
309
340
  end
310
341
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActionWebhook
4
- VERSION = "1.2.0"
4
+ VERSION = "1.2.1"
5
5
  end
metadata CHANGED
@@ -1,28 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_webhook
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vinay Uttam Vemparala
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-07-30 00:00:00.000000000 Z
10
+ date: 2025-07-31 00:00:00.000000000 Z
11
11
  dependencies:
12
- - !ruby/object:Gem::Dependency
13
- name: httparty
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - "~>"
17
- - !ruby/object:Gem::Version
18
- version: 0.18.1
19
- type: :runtime
20
- prerelease: false
21
- version_requirements: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - "~>"
24
- - !ruby/object:Gem::Version
25
- version: 0.18.1
26
12
  - !ruby/object:Gem::Dependency
27
13
  name: activejob
28
14
  requirement: !ruby/object:Gem::Requirement
@@ -57,6 +43,20 @@ dependencies:
57
43
  - - "~>"
58
44
  - !ruby/object:Gem::Version
59
45
  version: '1.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: httparty
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: 0.18.1
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 0.18.1
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: yard
62
62
  requirement: !ruby/object:Gem::Requirement