Class: Attio::Util::WebhookSignature::Handler
- Inherits:
-
Object
- Object
- Attio::Util::WebhookSignature::Handler
- Defined in:
- lib/attio/util/webhook_signature.rb
Overview
Helper class for webhook handlers
Instance Attribute Summary collapse
-
#secret ⇒ Object
readonly
Returns the value of attribute secret.
Instance Method Summary collapse
-
#initialize(secret) ⇒ Handler
constructor
A new instance of Handler.
-
#parse_and_verify(request) ⇒ Object
Parse and verify a request.
-
#verify_request(request) ⇒ Object
Verify a request.
Constructor Details
#initialize(secret) ⇒ Handler
Returns a new instance of Handler.
107 108 109 110 |
# File 'lib/attio/util/webhook_signature.rb', line 107 def initialize(secret) @secret = secret validate_secret! end |
Instance Attribute Details
#secret ⇒ Object (readonly)
Returns the value of attribute secret.
105 106 107 |
# File 'lib/attio/util/webhook_signature.rb', line 105 def secret @secret end |
Instance Method Details
#parse_and_verify(request) ⇒ Object
Parse and verify a request
128 129 130 131 132 133 134 135 |
# File 'lib/attio/util/webhook_signature.rb', line 128 def parse_and_verify(request) verify_request(request) body = extract_body(request) JSON.parse(body, symbolize_names: true) rescue JSON::ParserError => e raise SignatureVerificationError, "Invalid JSON payload: #{e.message}" end |
#verify_request(request) ⇒ Object
Verify a request
113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/attio/util/webhook_signature.rb', line 113 def verify_request(request) headers = extract_headers(request) body = extract_body(request) signature_data = WebhookSignature.extract_from_headers(headers) WebhookSignature.verify!( payload: body, signature: signature_data[:signature], timestamp: signature_data[:timestamp], secret: secret ) end |