
- Re-factor - Remove code for notifications - Remove addons - Remove travis-core gem. - Ignore logs directory only - Move core tests to spec/lib
82 lines
2.0 KiB
Ruby
82 lines
2.0 KiB
Ruby
require 'active_support/core_ext/object/blank'
|
|
require 'travis/support/logging'
|
|
require 'travis/support/instrumentation'
|
|
require 'travis/support/exceptions/handling'
|
|
|
|
require 'travis/event/config'
|
|
require 'travis/model/build'
|
|
require 'travis/api/serialize'
|
|
|
|
module Travis
|
|
module Event
|
|
class Handler
|
|
require 'travis/event/handler/metrics'
|
|
require 'travis/event/handler/trail'
|
|
|
|
include Logging
|
|
extend Instrumentation, Exceptions::Handling
|
|
|
|
class << self
|
|
def notify(event, object, data = {})
|
|
payload = Travis::Api::Serialize.data(object, for: 'event', version: 'v0', params: data) if object.is_a?(Build)
|
|
handler = new(event, object, data, payload)
|
|
handler.notify if handler.handle?
|
|
end
|
|
end
|
|
|
|
attr_reader :event, :object, :data, :payload
|
|
|
|
def initialize(event, object, data = {}, payload = {})
|
|
@event = event
|
|
@object = object
|
|
@data = data
|
|
@payload = payload
|
|
end
|
|
|
|
def notify
|
|
handle
|
|
end
|
|
# TODO disable instrumentation in tests
|
|
instrument :notify
|
|
rescues :notify, from: Exception
|
|
|
|
private
|
|
|
|
def config
|
|
# TODO: we should decrypt things in tasks, not in event handler,
|
|
# secure_key should be passed to the task and then it should
|
|
# decrypt the values, which task needs
|
|
@config ||= Config.new(payload, secure_key)
|
|
end
|
|
|
|
def repository
|
|
@repository ||= payload['repository']
|
|
end
|
|
|
|
def job
|
|
@job ||= payload['job']
|
|
end
|
|
|
|
def build
|
|
@build ||= payload['build']
|
|
end
|
|
|
|
def request
|
|
@request ||= payload['request']
|
|
end
|
|
|
|
def commit
|
|
@commit ||= payload['commit']
|
|
end
|
|
|
|
def secure_key
|
|
object.respond_to?(:repository) ? object.repository.key : nil
|
|
end
|
|
|
|
def pull_request?
|
|
build['pull_request']
|
|
end
|
|
end
|
|
end
|
|
end
|