lib/fake_sqs/server.rb in fake_sqs-0.0.3 vs lib/fake_sqs/server.rb in fake_sqs-0.0.4
- old
+ new
@@ -1,172 +1,16 @@
module FakeSQS
class Server
- attr_reader :port, :host, :queues, :responder
+ attr_reader :host, :port
- def initialize(options = {})
- @host = options.fetch(:host)
- @port = options.fetch(:port)
- @queues = options.fetch(:queues)
- @responder = options.fetch(:responder)
+ def initialize(options)
+ @host = options.fetch(:host)
+ @port = options.fetch(:port)
end
- def call(action, *args)
- public_send(action, *args)
- end
-
- # Actions for Queues
-
- def create_queue(params)
- name = params.fetch("QueueName")
- queue = queues.create(name, params)
- respond :CreateQueue do |xml|
- xml.QueueUrl url_for(queue.name)
- end
- end
-
- def delete_queue(name, params)
- queues.delete(name, params)
- respond :DeleteQueue
- end
-
- def list_queues(params)
- found = queues.list(params)
- respond :ListQueues do |xml|
- found.each do |queue|
- xml.QueueUrl url_for(queue.name)
- end
- end
- end
-
- def get_queue_url(params)
- name = params.fetch("QueueName")
- queue = queues.get(name, params)
- respond :GetQueueUrl do |xml|
- xml.QueueUrl url_for(queue.name)
- end
- end
-
- def get_queue_attributes(name, params)
- end
-
- def set_queue_attributes(name, params)
- end
-
- # Actions for Access Control on Queues
-
- def add_permission(name, params)
- end
-
- def remove_persmission(name, params)
- end
-
- # Actions for Messages
-
- def send_message(name, params)
- queue = queues.get(name)
- message = queue.send_message(params)
- respond :SendMessage do |xml|
- xml.MD5OfMessageBody message.md5
- xml.MessageId message.id
- end
- end
-
- def receive_message(name, params)
- queue = queues.get(name)
- messages = queue.receive_message(params)
- respond :ReceiveMessage do |xml|
- messages.each do |receipt, message|
- xml.Message do
- xml.MessageId message.id
- xml.ReceiptHandle receipt
- xml.MD5OfMessageBody message.md5
- xml.Body message.body
- end
- end
- end
- end
-
- def delete_message(name, params)
- queue = queues.get(name)
-
- receipt = params.fetch("ReceiptHandle")
- queue.delete_message(receipt)
- respond :DeleteMessage
- end
-
- def delete_message_batch(name, params)
- queue = queues.get(name)
- receipts = params.select { |k,v| k =~ /DeleteMessageBatchRequestEntry\.\d+\.ReceiptHandle/ }
-
- deleted = []
-
- receipts.each do |key, value|
- id = key.split('.')[1]
- queue.delete_message(value)
- deleted << params.fetch("DeleteMessageBatchRequestEntry.#{id}.Id")
- end
-
- respond :DeleteMessageBatch do |xml|
- deleted.each do |id|
- xml.DeleteMessageBatchResultEntry do
- xml.Id id
- end
- end
- end
- end
-
- def send_message_batch(name, params)
- queue = queues.get(name)
-
- messages = params.select { |k,v| k =~ /SendMessageBatchRequestEntry\.\d+\.MessageBody/ }
-
- results = {}
-
- messages.each do |key, value|
- id = key.split('.')[1]
- msg_id = params.fetch("SendMessageBatchRequestEntry.#{id}.Id")
- delay = params["SendMessageBatchRequestEntry.#{id}.DelaySeconds"]
- message = queue.send_message("MessageBody" => value, "DelaySeconds" => delay)
- results[msg_id] = message
- end
-
- respond :SendMessageBatch do |xml|
- results.each do |msg_id, message|
- xml.SendMessageBatchResultEntry do
- xml.Id msg_id
- xml.MessageId message.id
- xml.MD5OfMessageBody message.md5
- end
- end
- end
- end
-
-
- def change_message_visibility(name, params)
- end
-
- def change_message_visibility_batch(name, params)
- end
-
- # Fake actions
-
- def reset
- queues.reset
- end
-
- def expire
- queues.expire
- end
-
- private
-
- def respond(*args, &block)
- responder.call(*args, &block)
- end
-
- def url_for(id)
- "http://#{host}:#{port}/#{id}"
+ def url_for(queue_id)
+ "http://#{host}:#{port}/#{queue_id}"
end
end
end