Module: Sqs::Parser

Includes:
REXML
Included in:
Connection, Queue, Service
Defined in:
lib/sqs/parser.rb

Instance Method Summary collapse

Instance Method Details

#parse_create_queue_result(xml) ⇒ Object



16
17
18
# File 'lib/sqs/parser.rb', line 16

def parse_create_queue_result(xml)
  rexml_document(xml).elements["CreateQueueResponse/CreateQueueResult/QueueUrl"].text
end

#parse_error(xml) ⇒ Object



43
44
45
46
# File 'lib/sqs/parser.rb', line 43

def parse_error(xml)
  document = rexml_document(xml)
  [document.elements["ErrorResponse/Error/Code"].text.split(".").last, document.elements["ErrorResponse/Error/Message"].text]
end

#parse_get_queue_attributes_result(xml) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/sqs/parser.rb', line 20

def parse_get_queue_attributes_result(xml)
  attributes = {}
  rexml_document(xml).elements.each("GetQueueAttributesResponse/GetQueueAttributesResult/Attribute") do |e|
    name = e.elements["Name"].text
    value = e.elements["Value"].text
    attributes[name] = value
  end
  attributes
end

#parse_list_queues_result(xml) ⇒ Object



10
11
12
13
14
# File 'lib/sqs/parser.rb', line 10

def parse_list_queues_result(xml)
  urls = []
  rexml_document(xml).elements.each("ListQueuesResponse/ListQueuesResult/QueueUrl") { |e| urls << e.text }
  urls
end

#parse_receive_message_result(xml) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/sqs/parser.rb', line 30

def parse_receive_message_result(xml)
  messages = []
  rexml_document(xml).elements.each("ReceiveMessageResponse/ReceiveMessageResult/Message") do |e|
    messages << {
      :id => e.elements["MessageId"].text,
      :receipt_handle => e.elements["ReceiptHandle"].text,
      :body_md5 => e.elements["MD5OfBody"].text,
      :body => e.elements["Body"].text
    }
  end
  messages
end

#rexml_document(xml) ⇒ Object



5
6
7
8
# File 'lib/sqs/parser.rb', line 5

def rexml_document(xml)
  xml.force_encoding(Encoding::UTF_8) if xml.respond_to? :force_encoding
  Document.new(xml)
end