<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -83,7 +83,7 @@ class SharedKeyCredentials(object):
         if not for_tables:
             string_to_sign += canonicalized_headers + NEW_LINE   # Canonicalized headers
         string_to_sign += canonicalized_resource                 # Canonicalized resource
-
+        
         request.add_header('Authorization', 'SharedKey ' + self._account + ':' + base64.encodestring(hmac.new(self._key, unicode(string_to_sign).encode(&quot;utf-8&quot;), hashlib.sha256).digest()).strip())
         return request
 
@@ -126,6 +126,8 @@ class Storage(object):
 
 class TableEntity(object): pass
 
+class QueueMessage(): pass
+
 class QueueStorage(Storage):
     def __init__(self, host, account_name, secret_key, use_path_style_uris = None):
         super(QueueStorage, self).__init__(host, account_name, secret_key, use_path_style_uris)
@@ -148,6 +150,44 @@ class QueueStorage(Storage):
             return response.code
         except URLError, e:
             return e.code
+            
+    def put_message(self, queue_name, payload):
+        data = &quot;&lt;QueueMessage&gt;&lt;MessageText&gt;%s&lt;/MessageText&gt;&lt;/QueueMessage&gt;&quot; % base64.encodestring(payload)
+        req = RequestWithMethod(&quot;POST&quot;, &quot;%s/%s/messages&quot; % (self.get_base_url(), queue_name), data=data)
+        req.add_header(&quot;Content-Type&quot;, &quot;application/xml&quot;)
+        req.add_header(&quot;Content-Length&quot;, len(data))
+        self._credentials.sign_request(req)
+        try:
+            response = urlopen(req)
+            return response.code
+        except URLError, e:
+            return e.code
+
+    def get_message(self, queue_name):
+        req = Request(&quot;%s/%s/messages&quot; % (self.get_base_url(), queue_name))
+        self._credentials.sign_request(req)
+        response = urlopen(req)
+        dom = minidom.parseString(response.read())
+        messages = dom.getElementsByTagName(&quot;QueueMessage&quot;)
+        result = None
+        if len(messages) == 1:
+            message = messages[0]
+            result = QueueMessage()
+            result.id = message.getElementsByTagName(&quot;MessageId&quot;)[0].firstChild.data
+            result.pop_receipt = message.getElementsByTagName(&quot;PopReceipt&quot;)[0].firstChild.data
+            result.text = base64.decodestring(message.getElementsByTagName(&quot;MessageText&quot;)[0].firstChild.data)
+        return result
+
+    def delete_message(self, queue_name, message):
+        id = message.id
+        pop_receipt = message.pop_receipt
+        req = RequestWithMethod(&quot;DELETE&quot;, &quot;%s/%s/messages/%s?popreceipt=%s&quot; % (self.get_base_url(), queue_name, id, pop_receipt))
+        self._credentials.sign_request(req)
+        try:
+            response = urlopen(req)
+            return response.code
+        except URLError, e:
+            return e.code
 
 class TableStorage(Storage):
     '''Due to local development storage not supporting SharedKey authentication, this class</diff>
      <filename>winazurestorage.py</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>132c7dcdcc51549576cc6f2a1dfbc35a75339b9e</id>
    </parent>
  </parents>
  <author>
    <name>Steve Marx</name>
    <email>Steve.Marx@microsoft.com</email>
  </author>
  <url>http://github.com/sriramk/winazurestorage/commit/0c22ac7e0c1b3b8cb7bd6628492f388782e688ef</url>
  <id>0c22ac7e0c1b3b8cb7bd6628492f388782e688ef</id>
  <committed-date>2009-04-14T13:11:37-07:00</committed-date>
  <authored-date>2009-04-14T13:11:37-07:00</authored-date>
  <message>adding enqueue and dequeue support</message>
  <tree>626bee8349da677696f7c2fde1fba07e5dd2291b</tree>
  <committer>
    <name>Steve Marx</name>
    <email>Steve.Marx@microsoft.com</email>
  </committer>
</commit>
