Class: Legion::Trigger::Sources::Slack
- Defined in:
- lib/legion/trigger/sources/slack.rb
Instance Method Summary collapse
-
#normalize(headers:, body:) ⇒ Object
rubocop:disable Lint/UnusedMethodArgument.
- #verify_signature(headers:, body_raw:, secret:) ⇒ Object
Methods inherited from Base
delivery_header, event_header, signature_header, source_name
Instance Method Details
#normalize(headers:, body:) ⇒ Object
rubocop:disable Lint/UnusedMethodArgument
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/legion/trigger/sources/slack.rb', line 14 def normalize(headers:, body:) # rubocop:disable Lint/UnusedMethodArgument event = dig_body(body, 'event') || {} { source: 'slack', event_type: dig_body(body, 'type') || 'unknown', action: dig_body(event, 'type'), delivery_id: dig_body(body, 'event_id'), payload: body } end |
#verify_signature(headers:, body_raw:, secret:) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/legion/trigger/sources/slack.rb', line 25 def verify_signature(headers:, body_raw:, secret:) = headers['HTTP_X_SLACK_REQUEST_TIMESTAMP'] return false unless return false if (Time.now.to_i - .to_i).abs > 300 sig_basestring = "v0:#{}:#{body_raw}" digest = OpenSSL::HMAC.hexdigest('SHA256', secret, sig_basestring) expected = "v0=#{digest}" provided = headers[self.class.signature_header] return false unless provided secure_compare(provided, expected) end |