class Eventboss::SnsClient

Attributes

configuration[R]

Public Class Methods

new(configuration) click to toggle source
# File lib/eventboss/sns_client.rb, line 8
def initialize(configuration)
  @configuration = configuration
end

Public Instance Methods

create_subscription(topic_arn:, queue_arn:) click to toggle source
# File lib/eventboss/sns_client.rb, line 20
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
create_topic(name:) click to toggle source
# File lib/eventboss/sns_client.rb, line 16
def create_topic(name:)
  backend.create_topic(name: name)
end
publish(payload) click to toggle source
# File lib/eventboss/sns_client.rb, line 12
def publish(payload)
  backend.publish(payload)
end

Private Instance Methods

backend() click to toggle source
# File lib/eventboss/sns_client.rb, line 41
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
configured?() click to toggle source
# File lib/eventboss/sns_client.rb, line 62
def configured?
  !!(
    configuration.eventboss_region &&
    configuration.eventboss_account_id &&
    configuration.eventboss_app_name
  )
end
set_raw_message_delivery(subscription) click to toggle source
# File lib/eventboss/sns_client.rb, line 33
def set_raw_message_delivery(subscription)
  backend.set_subscription_attributes(
    subscription_arn: subscription.subscription_arn,
    attribute_name: 'RawMessageDelivery',
    attribute_value: 'true'
  )
end