Module: PaystackGateway::Webhooks
- Defined in:
- lib/paystack_gateway/webhooks.rb
Overview
Webhooks
Defined Under Namespace
Classes: WebhookResponse
Constant Summary collapse
- WEBHOOK_IPS =
%w[52.31.139.75 52.49.173.169 52.214.14.220].freeze
- WEBHOOK_IP_ADDRESSES =
WEBHOOK_IPS.map { |addr| IPAddr.new(addr) }
Class Method Summary collapse
- .parse_webhook(parsed_body) ⇒ Object
- .valid_ip?(request_ip) ⇒ Boolean
- .valid_webhook?(request_headers, request_body) ⇒ Boolean
Class Method Details
.parse_webhook(parsed_body) ⇒ Object
17 18 19 |
# File 'lib/paystack_gateway/webhooks.rb', line 17 def self.parse_webhook(parsed_body) WebhookResponse.new(parsed_body.deep_symbolize_keys) end |
.valid_ip?(request_ip) ⇒ Boolean
30 |
# File 'lib/paystack_gateway/webhooks.rb', line 30 def self.valid_ip?(request_ip) = WEBHOOK_IP_ADDRESSES.any? { _1.include?(request_ip) } |
.valid_webhook?(request_headers, request_body) ⇒ Boolean
22 23 24 25 26 27 28 |
# File 'lib/paystack_gateway/webhooks.rb', line 22 def self.valid_webhook?(request_headers, request_body) request_signature = request_headers['X-Paystack-Signature'] return false if request_signature.blank? calculated_signature = OpenSSL::HMAC.hexdigest('SHA512', PaystackGateway.secret_key, request_body) ActiveSupport::SecurityUtils.secure_compare(request_signature, calculated_signature) end |