class PactBroker::Webhooks::EventListener
Attributes
base_webhook_context[R]
detected_events[R]
webhook_options[R]
Public Class Methods
new(webhook_options)
click to toggle source
# File lib/pact_broker/webhooks/event_listener.rb, line 13 def initialize(webhook_options) @webhook_options = webhook_options # this has the base URL @base_webhook_context = webhook_options[:webhook_execution_configuration].webhook_context @detected_events = [] end
Public Instance Methods
contract_content_changed(params)
click to toggle source
# File lib/pact_broker/webhooks/event_listener.rb, line 28 def contract_content_changed(params) main_branch_verification = verification_service.find_latest_from_main_branch_for_pact(params.fetch(:pact)) handle_event_for_webhook(PactBroker::Webhooks::WebhookEvent::CONTRACT_CONTENT_CHANGED, { verification: main_branch_verification }.compact.merge(params)) end
contract_content_unchanged(params)
click to toggle source
# File lib/pact_broker/webhooks/event_listener.rb, line 33 def contract_content_unchanged(params) detected_events << PactBroker::Events::Event.new( "contract_content_unchanged", params[:event_comment], [] ) log_detected_event end
contract_published(params)
click to toggle source
# File lib/pact_broker/webhooks/event_listener.rb, line 20 def contract_published(params) main_branch_verification = verification_service.find_latest_from_main_branch_for_pact(params.fetch(:pact)) handle_event_for_webhook(PactBroker::Webhooks::WebhookEvent::CONTRACT_PUBLISHED, { verification: main_branch_verification }.compact.merge(params)) if verification_service.calculate_required_verifications_for_pact(params.fetch(:pact)).any? handle_event_for_webhook(PactBroker::Webhooks::WebhookEvent::CONTRACT_REQUIRING_VERIFICATION_PUBLISHED, params) end end
log_detected_event()
click to toggle source
# File lib/pact_broker/webhooks/event_listener.rb, line 54 def log_detected_event event = detected_events.last logger.debug "Event detected", payload: { event_name: event.name, event_comment: event.comment } if event.triggered_webhooks&.any? triggered_webhook_descriptions = event.triggered_webhooks.collect{ |tw| { event_name: event.name, webhook_uuid: tw.webhook_uuid, triggered_webhook_uuid: tw.uuid, webhook_description: tw.webhook.description } } logger.info "Triggered webhooks for #{event.name}", payload: { triggered_webhooks: triggered_webhook_descriptions } else logger.debug "No enabled webhooks found for event #{event.name}" end end
provider_verification_failed(params)
click to toggle source
# File lib/pact_broker/webhooks/event_listener.rb, line 50 def provider_verification_failed(params) handle_event_for_webhook(PactBroker::Webhooks::WebhookEvent::VERIFICATION_FAILED, params) end
provider_verification_published(params)
click to toggle source
# File lib/pact_broker/webhooks/event_listener.rb, line 42 def provider_verification_published(params) handle_event_for_webhook(PactBroker::Webhooks::WebhookEvent::VERIFICATION_PUBLISHED, params) end
provider_verification_succeeded(params)
click to toggle source
# File lib/pact_broker/webhooks/event_listener.rb, line 46 def provider_verification_succeeded(params) handle_event_for_webhook(PactBroker::Webhooks::WebhookEvent::VERIFICATION_SUCCEEDED, params) end
schedule_triggered_webhooks()
click to toggle source
# File lib/pact_broker/webhooks/event_listener.rb, line 65 def schedule_triggered_webhooks webhook_trigger_service.schedule_webhooks(detected_events.flat_map(&:triggered_webhooks), webhook_options) end
Private Instance Methods
handle_event_for_webhook(event_name, params)
click to toggle source
# File lib/pact_broker/webhooks/event_listener.rb, line 73 def handle_event_for_webhook(event_name, params) triggered_webhooks = webhook_trigger_service.create_triggered_webhooks_for_event( params.fetch(:pact), params[:verification], event_name, base_webhook_context.merge(params.fetch(:event_context)) ) event = PactBroker::Events::Event.new( event_name, params[:event_comment], triggered_webhooks ) detected_events << event broadcast(:triggered_webhooks_created_for_event, event: event) log_detected_event end