libcloud-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From to...@apache.org
Subject svn commit: r1239825 - in /libcloud/trunk/libcloud: common/base.py utils/compression.py
Date Thu, 02 Feb 2012 20:42:19 GMT
Author: tomaz
Date: Thu Feb  2 20:42:19 2012
New Revision: 1239825

URL: http://svn.apache.org/viewvc?rev=1239825&view=rev
Log:
Add a new module for handling decompression of data.

Added:
    libcloud/trunk/libcloud/utils/compression.py
Modified:
    libcloud/trunk/libcloud/common/base.py

Modified: libcloud/trunk/libcloud/common/base.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/common/base.py?rev=1239825&r1=1239824&r2=1239825&view=diff
==============================================================================
--- libcloud/trunk/libcloud/common/base.py (original)
+++ libcloud/trunk/libcloud/common/base.py Thu Feb  2 20:42:19 2012
@@ -16,8 +16,6 @@
 import sys
 import ssl
 import time
-import zlib
-import gzip
 
 from xml.etree import ElementTree as ET
 from pipes import quote as pquote
@@ -38,6 +36,7 @@ from libcloud.utils.py3 import StringIO
 from libcloud.utils.py3 import b
 
 from libcloud.utils.misc import lowercase_keys
+from libcloud.utils.compression import decompress_data
 from libcloud.common.types import LibcloudError, MalformedResponseError
 
 from libcloud.httplib_ssl import LibcloudHTTPSConnection
@@ -121,16 +120,9 @@ class Response(object):
         body = response.read()
 
         if encoding in  ['zlib', 'deflate']:
-            body = zlib.decompress(body)
+            body = decompress_data('zlib', body)
         elif encoding in ['gzip', 'x-gzip']:
-            # TODO: Should export BytesIO as StringIO in libcloud.utils.py3
-            if PY3:
-                from io import BytesIO
-                cls = BytesIO
-            else:
-                cls = StringIO
-
-            body = gzip.GzipFile(fileobj=cls(body)).read()
+            body = decompress_data('gzip', body)
         else:
             body = body.strip()
 

Added: libcloud/trunk/libcloud/utils/compression.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/utils/compression.py?rev=1239825&view=auto
==============================================================================
--- libcloud/trunk/libcloud/utils/compression.py (added)
+++ libcloud/trunk/libcloud/utils/compression.py Thu Feb  2 20:42:19 2012
@@ -0,0 +1,43 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import zlib
+import gzip
+
+from libcloud.utils.py3 import PY3
+from libcloud.utils.py3 import StringIO
+from libcloud.utils.py3 import b
+
+
+__all__ = [
+    'decompress_data'
+]
+
+
+def decompress_data(compression_type, data):
+    if compression_type == 'zlib':
+        return zlib.decompress(data)
+    elif compression_type == 'gzip':
+        # TODO: Should export BytesIO as StringIO in libcloud.utils.py3
+        if PY3:
+            from io import BytesIO
+            cls = BytesIO
+        else:
+            cls = StringIO
+
+        return gzip.GzipFile(fileobj=cls(data)).read()
+    else:
+        raise Exception('Invalid or onsupported compression type: %s' %
+                        (compression_type))



Mime
View raw message