Class: Jackal::Github::Eventer
- Inherits:
-
Callback
- Object
- Callback
- Jackal::Github::Eventer
- Defined in:
- lib/jackal-github/eventer.rb
Overview
Process events
Instance Method Summary collapse
-
#allowed_events(payload) ⇒ Array, NilClass
Event types allowed to be dropped into pipeline.
-
#execute(message) ⇒ Object
Format payload based on event type recevied.
-
#filter(message, payload) { ... } ⇒ Object
Apply filters to payload.
-
#format_payload(message) ⇒ Smash
Format the github event to store within the payload.
-
#name_for_payload(event) ⇒ String
Provide payload name for given event.
-
#restricted_events(payload) ⇒ Array, NilClass
Event types restricted from being dropped into pipeline.
-
#valid?(message) ⇒ Truthy, Falsey
Validity of message.
Instance Method Details
#allowed_events(payload) ⇒ Array, NilClass
Event types allowed to be dropped into pipeline
60 61 62 63 64 65 66 |
# File 'lib/jackal-github/eventer.rb', line 60 def allowed_events(payload) a_events = config.fetch(:events, :allowed, []) a_events += payload.fetch(:data, :github, :query, {}).map do |k,v| k if v == 'enabled' end.compact a_events.empty? ? nil : a_events end |
#execute(message) ⇒ Object
Format payload based on event type recevied
22 23 24 25 26 27 28 29 30 |
# File 'lib/jackal-github/eventer.rb', line 22 def execute() failure_wrap() do |_| content = format_payload() payload = new_payload(name_for_payload(content), content) filter(, payload) do job_completed(:github, payload, ) end end end |
#filter(message, payload) { ... } ⇒ Object
Apply filters to payload. If filters are enabled and no filter matches, discard payload
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/jackal-github/eventer.rb', line 38 def filter(, payload) valid = true a_events = allowed_events(payload) r_events = restricted_events(payload) if(a_events && !a_events.include?(payload.get(:data, :github, :event))) valid = false end if(r_events && r_events.include?(payload.get(:data, :github, :event))) valid = false end if(valid) yield else warn "Message has been filtered and is restricted from entering pipeline (#{})" .confirm! end end |
#format_payload(message) ⇒ Smash
Format the github event to store within the payload
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/jackal-github/eventer.rb', line 84 def format_payload() content = Smash.new g_payload = unpack() #message[:message][:body] g_headers = [:message][:headers] || {} g_query = [:message][:query] || {} content[:github] = g_payload.merge( Smash.new( :event => g_headers.fetch(:x_github_event, 'push'), :query => g_query, :headers => g_headers, :url_path => ([:message][:request] && [:message][:request].path) ) ) content end |
#name_for_payload(event) ⇒ String
Note:
defaults to ‘github`
Provide payload name for given event
105 106 107 108 109 |
# File 'lib/jackal-github/eventer.rb', line 105 def name_for_payload(event) config.fetch(:names, event, config.fetch(:names, :default, :github) ) end |
#restricted_events(payload) ⇒ Array, NilClass
Event types restricted from being dropped into pipeline
72 73 74 75 76 77 78 |
# File 'lib/jackal-github/eventer.rb', line 72 def restricted_events(payload) r_events = config.fetch(:events, :restricted, []) r_events += payload.fetch(:data, :github, :query, {}).map do |k,v| k if v == 'disabled' end.compact r_events.empty? ? nil : a_events end |
#valid?(message) ⇒ Truthy, Falsey
Validity of message
12 13 14 15 16 17 |
# File 'lib/jackal-github/eventer.rb', line 12 def valid?() super do |payload| payload.get(:pusher) || [:message].get(:headers, :x_github_event) end end |