Sha256: 143d804dd940c79bedb582d801ee1a3f5fa71821be48877c54832fd45c181783
Contents?: true
Size: 1.75 KB
Versions: 10
Compression:
Stored size: 1.75 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: ::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