adding translations and transifex third party tool
[pub/Android/ownCloud.git] / third_party / transifex-client / txclib / http_utils.py
diff --git a/third_party/transifex-client/txclib/http_utils.py b/third_party/transifex-client/txclib/http_utils.py
new file mode 100644 (file)
index 0000000..3243149
--- /dev/null
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+
+"""
+HTTP-related utility functions.
+"""
+
+from __future__ import with_statement
+import gzip
+try:
+    import cStringIO as StringIO
+except ImportError:
+    import StringIO
+
+
+def _gzip_decode(gzip_data):
+    """
+    Unzip gzipped data and return them.
+
+    :param gzip_data: Gzipped data.
+    :returns: The actual data.
+    """
+    try:
+        gzip_data = StringIO.StringIO(gzip_data)
+        gzip_file = gzip.GzipFile(fileobj=gzip_data)
+        data = gzip_file.read()
+        return data
+    finally:
+        gzip_data.close()
+
+
+def http_response(response):
+    """
+    Return the response of a HTTP request.
+
+    If the response has been gzipped, gunzip it first.
+
+    :param response: The raw response of a HTTP request.
+    :returns: A response suitable to be used by clients.
+    """
+    metadata = response.info()
+    data = response.read()
+    response.close()
+    if metadata.get('content-encoding') == 'gzip':
+        return _gzip_decode(data)
+    else:
+        return data