Sha256: 66a3c190e3ac97f3f6081a9f39816cfbae495585affe9388bade50e1bd451fbd

Contents?: true

Size: 1.82 KB

Versions: 20

Compression:

Stored size: 1.82 KB

Contents

require 'pact_broker/repositories'
require 'pact_broker/logging'
require 'base64'

module PactBroker

  module Services
    class WebhookService

      extend Repositories
      include Logging

      def self.next_uuid
        SecureRandom.urlsafe_base64
      end

      def self.errors webhook
        contract = PactBroker::Api::Contracts::WebhookContract.new(webhook)
        contract.validate
        contract.errors
      end

      def self.create uuid, webhook, consumer, provider
        webhook_repository.create uuid, webhook, consumer, provider
      end

      def self.find_by_uuid uuid
        webhook_repository.find_by_uuid uuid
      end

      def self.delete_by_uuid uuid
        webhook_repository.delete_by_uuid uuid
      end

      def self.delete_by_pacticipant pacticipant
        webhook_repository.delete_by_pacticipant pacticipant
      end

      def self.find_all
        webhook_repository.find_all
      end

      def self.execute_webhook_now webhook
        webhook.execute
      end

      def self.find_by_consumer_and_provider consumer, provider
        webhook_repository.find_by_consumer_and_provider consumer, provider
      end

      def self.execute_webhooks pact
        webhooks = webhook_repository.find_by_consumer_and_provider pact.consumer, pact.provider
        if webhooks.any?
          run_later(webhooks)
        else
          logger.debug "No webhook found for consumer \"#{pact.consumer.name}\" and provider \"#{pact.provider.name}\""
        end
      end

      # TODO background job?
      def self.run_later webhooks
        Thread.new do
          webhooks.each do | webhook |
            begin
              webhook.execute
            rescue StandardError => e
              # Exceptions are already logged, no need to log again.
            end
          end
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
pact_broker-1.14.0 lib/pact_broker/services/webhook_service.rb
pact_broker-1.13.0 lib/pact_broker/services/webhook_service.rb
pact_broker-1.12.0 lib/pact_broker/services/webhook_service.rb
pact_broker-1.11.2 lib/pact_broker/services/webhook_service.rb
pact_broker-1.11.1 lib/pact_broker/services/webhook_service.rb
pact_broker-1.11.0 lib/pact_broker/services/webhook_service.rb
pact_broker-1.10.0 lib/pact_broker/services/webhook_service.rb
pact_broker-1.9.3 lib/pact_broker/services/webhook_service.rb
pact_broker-1.9.2 lib/pact_broker/services/webhook_service.rb
pact_broker-1.9.1 lib/pact_broker/services/webhook_service.rb
pact_broker-1.9.0 lib/pact_broker/services/webhook_service.rb
pact_broker-1.9.0.rc1 lib/pact_broker/services/webhook_service.rb
pact_broker-1.8.1 lib/pact_broker/services/webhook_service.rb
pact_broker-1.8.0 lib/pact_broker/services/webhook_service.rb
pact_broker-1.7.0 lib/pact_broker/services/webhook_service.rb
pact_broker-1.6.0 lib/pact_broker/services/webhook_service.rb
pact_broker-1.5.0 lib/pact_broker/services/webhook_service.rb
pact_broker-1.4.0 lib/pact_broker/services/webhook_service.rb
pact_broker-1.3.2.rc1 lib/pact_broker/services/webhook_service.rb
pact_broker-1.3.1 lib/pact_broker/services/webhook_service.rb