module Cumulus::SQS

Public Class Methods

get_arn(queue_name) click to toggle source

Public: Static method that will get the ARN of a Queue

name - the name of the queue to get

Returns the String ARN

# File lib/sqs/SQS.rb, line 16
def get_arn(queue_name)
  queue_arns.fetch(queue_name)
rescue KeyError
  puts Colors.red("No SQS queue named #{queue_name}")
  exit 1
end
queue_arns() click to toggle source

Public: Returns a mapping of queue name to ARN

# File lib/sqs/SQS.rb, line 24
def queue_arns
  @queue_arns ||= Hash[queue_attributes.map { |name, attrs| [name, attrs["QueueArn"]] }]
end
queue_attributes() click to toggle source

Public: Return a mapping of queue name to attributes

# File lib/sqs/SQS.rb, line 39
def queue_attributes
  @queue_attributes ||= Hash[queue_urls.map { |name, url| [name, init_attributes(url)] }]
end
queue_policy(queue_name) click to toggle source

Public: Return the policy of a queue as a Hash

# File lib/sqs/SQS.rb, line 29
def queue_policy(queue_name)
  JSON.parse(URI.decode(queue_attributes[queue_name]["Policy"])) rescue nil
end
queue_urls() click to toggle source

Public: Return a mapping of queue name to url

# File lib/sqs/SQS.rb, line 34
def queue_urls
  @queue_urls ||= init_urls
end

Private Class Methods

init_attributes(queue_url) click to toggle source

Internal: Returns a Hash of attribute names to values

# File lib/sqs/SQS.rb, line 46
def init_attributes(queue_url)
  @@client.get_queue_attributes({
    queue_url: queue_url,
    attribute_names: ["All"]
  }).attributes
rescue Aws::SQS::Errors::NonExistentQueue
  puts "Queue #{queue_url} has been deleted. Please wait a few seconds until AWS updates the list of queues"
  exit 1
end
init_urls() click to toggle source

Internal: Map queue names to their urls.

# File lib/sqs/SQS.rb, line 57
def init_urls
  Hash[@@client.list_queues.queue_urls.map { |u| [u[(u.rindex("/") + 1)..-1], u] }]
end