Sha256: c719f46f6d4b4d8c52a0d01da6d6e8546750ecf478daf7f8fce529ce5fdfe21b

Contents?: true

Size: 1.19 KB

Versions: 10

Compression:

Stored size: 1.19 KB

Contents

module Eventboss
  class NotConfigured < StandardError; end

  class SnsClient
    def initialize(configuration)
      @configuration = configuration
    end

    def publish(payload)
      backend.publish(payload)
    end

    private

    attr_reader :configuration

    def backend
      if configured?
        options = {
          region: configuration.eventboss_region,
          credentials: ::Aws::Credentials.new(
            configuration.aws_access_key_id,
            configuration.aws_secret_access_key
          )
        }
        if configuration.aws_sns_endpoint
          options[:endpoint] = configuration.aws_sns_endpoint
        end
        Aws::SNS::Client.new(
          options
        )
      elsif configuration.raise_on_missing_configuration
        raise NotConfigured, 'Eventboss is not configured'
      else
        Mock.new
      end
    end

    def configured?
      !!(
        configuration.eventboss_region &&
        configuration.eventboss_account_id &&
        configuration.eventboss_app_name
      )
    end

    class Mock
      def publish(_)
        Eventboss::Logger.info('Eventboss is not configured. Skipping message publishing!')
        return
      end
    end
  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
eventboss-1.1.2 lib/eventboss/sns_client.rb
eventboss-1.1.1 lib/eventboss/sns_client.rb
eventboss-1.1.0 lib/eventboss/sns_client.rb
eventboss-1.0.6 lib/eventboss/sns_client.rb
eventboss-1.0.5 lib/eventboss/sns_client.rb
eventboss-1.0.4 lib/eventboss/sns_client.rb
eventboss-1.0.3 lib/eventboss/sns_client.rb
eventboss-1.0.2 lib/eventboss/sns_client.rb
eventboss-1.0.1 lib/eventboss/sns_client.rb
eventboss-1.0.0 lib/eventboss/sns_client.rb