Class: Kortana::Webhook
- Inherits:
-
Object
- Object
- Kortana::Webhook
- Defined in:
- lib/kortana/webhooks.rb
Instance Method Summary collapse
-
#initialize(secret) ⇒ Webhook
constructor
A new instance of Webhook.
- #verify(payload, signature) ⇒ Object
Constructor Details
#initialize(secret) ⇒ Webhook
Returns a new instance of Webhook.
3 4 5 |
# File 'lib/kortana/webhooks.rb', line 3 def initialize(secret) @secret = secret end |
Instance Method Details
#verify(payload, signature) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/kortana/webhooks.rb', line 7 def verify(payload, signature) raise WebhookSignatureError, "Signature must not be empty" if signature.nil? || signature.strip.empty? raise WebhookSignatureError, "Webhook secret must not be empty" if @secret.nil? || @secret.strip.empty? expected = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @secret, payload) unless secure_compare(expected, signature) raise WebhookSignatureError, "Webhook signature verification failed" end JSON.parse(payload) rescue JSON::ParserError raise WebhookSignatureError, "Invalid JSON payload" end |