module Cumulus::SQS
Public Class Methods
client()
click to toggle source
Public Returns the AWS client used in the module
# File lib/sqs/SQS.rb, line 13 def client @@client end
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 22 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 30 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 45 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 35 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 40 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 52 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 63 def init_urls Hash[@@client.list_queues.queue_urls.map { |u| [u[(u.rindex("/") + 1)..-1], u] }] end