class Realm::SNS::Gateway::QueueAdapter

Provides cleaner SDK over Aws::SQS::Queue

Public Instance Methods

allow_send_messages(source_arn) click to toggle source
# File lib/realm/sns/gateway/queue_adapter.rb, line 14
def allow_send_messages(source_arn)
  @queue.set_attributes(attributes: {
                          'Policy' => {
                            'Version' => '2012-10-17',
                            'Statement' => policy_statement(source_arn),
                          }.to_json,
                        })
end
arn() click to toggle source
# File lib/realm/sns/gateway/queue_adapter.rb, line 10
def arn
  @queue.attributes['QueueArn']
end
empty?() click to toggle source
# File lib/realm/sns/gateway/queue_adapter.rb, line 30
def empty?
  attributes.slice(
    'ApproximateNumberOfMessages',
    'ApproximateNumberOfMessagesDelayed',
    'ApproximateNumberOfMessagesNotVisible',
  ).all? { |_, val| val.to_i.zero? }
end
publish(event_type, message) click to toggle source
# File lib/realm/sns/gateway/queue_adapter.rb, line 23
def publish(event_type, message)
  @queue.send_message(
    message_body: message,
    message_attributes: { 'event_type' => { data_type: 'String', string_value: event_type.to_s } },
  )
end

Private Instance Methods

policy_statement(source_arn) click to toggle source
# File lib/realm/sns/gateway/queue_adapter.rb, line 40
def policy_statement(source_arn)
  {
    'Effect' => 'Allow',
    'Principal' => { 'AWS' => '*' },
    'Action' => 'sqs:SendMessage',
    'Resource' => arn,
    'Condition' => {
      'ArnEquals' => { 'aws:SourceArn' => source_arn },
    },
  }
end