Sha256: d649671ebf468871cf097b6c0a20b62d1dcf406d7d43c571f541fc4d209e46c3
Contents?: true
Size: 1.99 KB
Versions: 2
Compression:
Stored size: 1.99 KB
Contents
# frozen_string_literal: true module Eventboss class NotConfigured < StandardError; end class SnsClient def initialize(configuration) @configuration = configuration end def publish(payload) backend.publish(payload) end def create_topic(name:) backend.create_topic(name: name) end def create_subscription(topic_arn:, queue_arn:) subscription = backend.subscribe( topic_arn: topic_arn, endpoint: queue_arn, protocol: 'sqs' ) set_raw_message_delivery(subscription) end private attr_reader :configuration def set_raw_message_delivery(subscription) backend.set_subscription_attributes( subscription_arn: subscription.subscription_arn, attribute_name: 'RawMessageDelivery', attribute_value: 'true' ) end def backend if configured? options = { region: configuration.eventboss_region, credentials: credentials } 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 credentials return ::Aws::Credentials.new( configuration.aws_access_key_id, configuration.aws_secret_access_key, configuration.aws_session_token ) if configuration.development_mode? ::Aws::Credentials.new( configuration.aws_access_key_id, configuration.aws_secret_access_key ) 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
eventboss-1.9.2 | lib/eventboss/sns_client.rb |
eventboss-1.9.1 | lib/eventboss/sns_client.rb |