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