Sha256: ce14b6a7714f0ba7387f1c861e1051506366e3b8d98d7d21d4ba013b9147d006

Contents?: true

Size: 848 Bytes

Versions: 13

Compression:

Stored size: 848 Bytes

Contents

module Eventboss
  class Publisher
    def initialize(event_name, sns_client, configuration, opts = {})
      @event_name = event_name
      @sns_client = sns_client
      @configuration = configuration
      @generic = opts[:generic]
    end

    def publish(payload)
      sns_client.publish({
        topic_arn: topic_arn,
        message: json_payload(payload)
      })
    end

    private

    attr_reader :event_name, :sns_client, :configuration

    def json_payload(payload)
      payload.is_a?(String) ? payload : payload.to_json
    end

    def topic_arn
      src_selector = @generic ? "" : "-#{configuration.eventboss_app_name}"

      "arn:aws:sns:#{configuration.eventboss_region}:#{configuration.eventboss_account_id}:\
#{Eventboss.configuration.sns_sqs_name_infix}#{src_selector}-#{event_name}-#{Eventboss.env}"
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
eventboss-1.3.1 lib/eventboss/publisher.rb
eventboss-1.3.0 lib/eventboss/publisher.rb
eventboss-1.2.1 lib/eventboss/publisher.rb
eventboss-1.2.0 lib/eventboss/publisher.rb
eventboss-1.1.3 lib/eventboss/publisher.rb
eventboss-1.1.2 lib/eventboss/publisher.rb
eventboss-1.1.1 lib/eventboss/publisher.rb
eventboss-1.1.0 lib/eventboss/publisher.rb
eventboss-1.0.6 lib/eventboss/publisher.rb
eventboss-1.0.5 lib/eventboss/publisher.rb
eventboss-1.0.4 lib/eventboss/publisher.rb
eventboss-1.0.3 lib/eventboss/publisher.rb
eventboss-1.0.2 lib/eventboss/publisher.rb