Class: Legion::Trigger::Sources::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/trigger/sources/base.rb

Direct Known Subclasses

Github, Linear, Slack

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.delivery_header(name = nil) ⇒ Object



16
17
18
# File 'lib/legion/trigger/sources/base.rb', line 16

def delivery_header(name = nil)
  name ? @delivery_header = name : @delivery_header
end

.event_header(name = nil) ⇒ Object



12
13
14
# File 'lib/legion/trigger/sources/base.rb', line 12

def event_header(name = nil)
  name ? @event_header = name : @event_header
end

.signature_header(name = nil) ⇒ Object



8
9
10
# File 'lib/legion/trigger/sources/base.rb', line 8

def signature_header(name = nil)
  name ? @signature_header = name : @signature_header
end

.source_name(name = nil) ⇒ Object



20
21
22
# File 'lib/legion/trigger/sources/base.rb', line 20

def source_name(name = nil)
  name ? @source_name = name : @source_name
end

Instance Method Details

#normalize(headers:, body:) ⇒ Object

Raises:

  • (NotImplementedError)


25
26
27
# File 'lib/legion/trigger/sources/base.rb', line 25

def normalize(headers:, body:)
  raise NotImplementedError, "#{self.class}#normalize must be implemented"
end

#verify_signature(headers:, body_raw:, secret:) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/legion/trigger/sources/base.rb', line 29

def verify_signature(headers:, body_raw:, secret:)
  sig_header = self.class.signature_header
  return false unless sig_header

  provided = headers[sig_header]
  return false unless provided

  expected = compute_signature(body_raw, secret)
  secure_compare(provided, expected)
end