Sha256: 8d0227349b5fad260ed34834d1ce75dd5d41612c836340795ae115d94c333ed6

Contents?: true

Size: 1.45 KB

Versions: 3

Compression:

Stored size: 1.45 KB

Contents

module Pipedream
  class Webhook
    include Pipedream::Dsl::Webhook
    include Evaluate

    def initialize(options={})
      @options = options
      @webhook_path = options[:webhook_path] || get_webhook_path
      @properties = default_properties
    end

    def run
      return unless File.exist?(@webhook_path)

      old_properties = @properties.clone
      evaluate(@webhook_path)
      set_secret_token!
      return if old_properties == @properties # empty webhook.rb file

      resource = {
        webhook: {
          type: "AWS::CodePipeline::Webhook",
          properties: @properties
        }
      }
      CfnCamelizer.transform(resource)
    end

    def default_properties
      {
        authentication: 'GITHUB_HMAC', # GITHUB_HMAC, IP and UNAUTHENTICATED
        authentication_configuration: {
           secret_token: @secret_token,
        },
        filters: [{
          json_path: "$.ref",
          match_equals: "refs/heads/{Branch}",
        }],
        # name: '', # optional
        register_with_third_party: 'true', # optional
        target_action: 'Source',
        target_pipeline: {ref: "Pipeline"},
        target_pipeline_version: {"Fn::GetAtt": "Pipeline.Version"},
      }
    end

    def set_secret_token!
      @properties.merge!(
        authentication_configuration: {
          secret_token: @secret_token
        }
      )
    end
  private

    def get_webhook_path
      lookup_codepipeline_file("webhook.rb")
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pipedream-0.4.2 lib/pipedream/webhook.rb
pipedream-0.4.1 lib/pipedream/webhook.rb
pipedream-0.4.0 lib/pipedream/webhook.rb