Package sqs :: Module parsers
[hide private]
[frames] | no frames]

Source Code for Module sqs.parsers

  1  from sqs.errors import SQSError 
  2  import sqs 
  3   
  4  try: 
  5      import cElementTree as et 
  6  except: 
  7      from elementtree import ElementTree as et 
  8   
  9  xmlns = "http://queue.amazonaws.com/doc/" + sqs.VERSION + '/' 
 10   
11 -def parseError(xml):
12 ''' 13 Parse the response XML if error occured, and creates an SQSError exception. 14 15 @param xml: The XML error response 16 @type xml: string 17 @return: Returns the SQSError exception 18 @rtype: SQSError 19 ''' 20 print "Dosao sam u parseError:\n", xml 21 root = et.fromstring(xml) 22 code = root.find('Errors/Error/Code').text 23 body = root.find('Errors/Error/Message').text 24 if code == 'MissingParameter': 25 reason = root.find('MissingParameterName').text 26 elif code == 'AccessFailure': 27 reason = root.find('ServiceName').text 28 else: 29 reason = '' 30 return SQSError(code, reason, body)
31 32
33 -def parseQueueList(xml, connection):
34 '''Parse the response XML for listing queues 35 36 @param xml: The XML response 37 @type xml: string 38 @param connection: SQSConnection to the server 39 @type connection: SQSConnection 40 @return: List of queues 41 @rtype: list 42 ''' 43 queues = [] 44 root = et.fromstring(xml) 45 for node in root.findall('{%s}QueueUrl' % xmlns): 46 queues.append(sqs.SQSQueue(node.text, connection)) 47 return queues
48 49
50 -def parseQueueCreation(xml, connection):
51 '''Parse the response XML returned on queue creation 52 53 @param xml: The XML response 54 @type xml: string 55 @param connection: SQSConnection to the server 56 @type connection: SQSConnection 57 @return: Newly created queue 58 @rtype: SQSQueue 59 ''' 60 root = et.fromstring(xml) 61 return sqs.SQSQueue(root.find('{%s}QueueUrl' % xmlns).text, connection)
62 63
64 -def parseTimeout(xml):
65 pass
66 67
68 -def parseMessageCreate(xml):
69 root = et.fromstring(xml) 70 return root.find('{%s}MessageId' % xmlns)
71 72
73 -def parseMessageRead(xml):
74 root = et.fromstring(xml) 75 message = root.find('{%s}Message' % xmlns) 76 if message != None: 77 id = message.find('{%s}MessageId' % xmlns).text 78 body = message.find('{%s}MessageBody' % xmlns).text 79 return sqs.SQSMessage(id=id, body=body) 80 return None
81 82
83 -def parseMessagesRead(xml):
84 messages = [] 85 root = et.fromstring(xml) 86 for message in root.findall('{%s}Message' % xmlns): 87 id = message.find('{%s}MessageId' % xmlns).text 88 body = message.find('{%s}MessageBody' % xmlns).text 89 messages.append(sqs.SQSMessage(id=id, body=body)) 90 return messages
91 92 ##class GetTimeoutHandler(xml.sax.ContentHandler): 93 ## def __init__(self): 94 ## self.timeout = None 95 ## self.status = None 96 ## self.request_id = None 97 ## self.curr_text = '' 98 ## 99 ## def endElement(self, name): 100 ## if name == 'VisibilityTimeout': 101 ## self.timeout = int(self.curr_text) 102 ## elif name == 'StatusCode': 103 ## self.status = self.curr_text 104 ## elif name == 'RequestId': 105 ## self.request_id = self.curr_text 106 ## 107 ## self.curr_text = '' 108 ## 109 ## def characters(self, content): 110 ## self.curr_text += content 111 ## 112 ## 113 ##class GetMessageHandler(xml.sax.ContentHandler): 114 ## def __init__(self, queue, messageClass): 115 ## self.queue = queue 116 ## self.message = messageClass() 117 ## self.message.queue = queue 118 ## self.id = None 119 ## self.request_id = None 120 ## self.curr_text = '' 121 ## 122 ## def endElement(self, name): 123 ## if name == 'MessageId': 124 ## self.message.id = self.curr_text 125 ## elif name == 'MessageBody': 126 ## self.message.set_body(self.curr_text) 127 ## elif name == 'StatusCode': 128 ## self.status = self.curr_text 129 ## elif name == 'RequestId': 130 ## self.request_id = self.curr_text 131 ## self.curr_text = '' 132 ## 133 ## def characters(self, content): 134 ## self.curr_text += content 135 ## 136 ## 137 ## 138 ##class GetMessagesHandler(xml.sax.ContentHandler): 139 ## def __init__(self, queue, messageClass): 140 ## self.queue = queue 141 ## self.messages = [] 142 ## self.current_message = None 143 ## self.id = None 144 ## self.request_id = None 145 ## self.curr_text = '' 146 ## self._messageClass = messageClass 147 ## 148 ## def startElement(self, name, attrs): 149 ## if name == 'Message': 150 ## self.current_message = self._messageClass() 151 ## self.current_message.queue = self.queue 152 ## self.messages.append(self.current_message) 153 ## 154 ## def endElement(self, name): 155 ## if name == 'MessageId': 156 ## self.current_message.id = self.curr_text 157 ## elif name == 'MessageBody': 158 ## self.current_message.body = self.curr_text 159 ## elif name == 'StatusCode': 160 ## self.status = self.curr_text 161 ## elif name == 'RequestId': 162 ## self.request_id = self.curr_text 163 ## self.curr_text = '' 164 ## 165 ## def characters(self, content): 166 ## self.curr_text += content 167