You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by an...@apache.org on 2017/04/02 11:38:51 UTC

[09/16] libcloud git commit: fix libcloud connection class

fix libcloud connection class


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/1c5deaf5
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/1c5deaf5
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/1c5deaf5

Branch: refs/heads/trunk
Commit: 1c5deaf5dc26685a5a5f46f18fef732269029507
Parents: 2d60ee2
Author: Anthony Shaw <an...@apache.org>
Authored: Wed Jan 11 10:03:44 2017 +1100
Committer: Anthony Shaw <an...@apache.org>
Committed: Wed Jan 11 10:03:44 2017 +1100

----------------------------------------------------------------------
 libcloud/utils/loggingconnection.py | 75 +++++++++-----------------------
 1 file changed, 20 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/1c5deaf5/libcloud/utils/loggingconnection.py
----------------------------------------------------------------------
diff --git a/libcloud/utils/loggingconnection.py b/libcloud/utils/loggingconnection.py
index 3ee09ad..adea0ba 100644
--- a/libcloud/utils/loggingconnection.py
+++ b/libcloud/utils/loggingconnection.py
@@ -23,18 +23,11 @@ except:
 from pipes import quote as pquote
 from xml.dom.minidom import parseString
 
-import sys
 import os
 
 from libcloud.common.base import (LibcloudConnection,
-                                  HTTPResponse,
                                   HttpLibResponseProxy)
-from libcloud.utils.py3 import httplib
-from libcloud.utils.py3 import PY3
-from libcloud.utils.py3 import StringIO
 from libcloud.utils.py3 import u
-from libcloud.utils.py3 import b
-
 
 from libcloud.utils.misc import lowercase_keys
 from libcloud.utils.compression import decompress_data
@@ -68,20 +61,6 @@ class LoggingConnection(LibcloudConnection):
             ht += "%s: %s\r\n" % (h[0].title(), h[1])
         ht += "\r\n"
 
-        # this is evil. laugh with me. ha arharhrhahahaha
-        class fakesock(object):
-            def __init__(self, s):
-                self.s = s
-
-            def makefile(self, *args, **kwargs):
-                if PY3:
-                    from io import BytesIO
-                    cls = BytesIO
-                else:
-                    cls = StringIO
-
-                return cls(b(self.s))
-        rr = r
         headers = lowercase_keys(dict(r.getheaders()))
 
         encoding = headers.get('content-encoding', None)
@@ -95,42 +74,28 @@ class LoggingConnection(LibcloudConnection):
         pretty_print = os.environ.get('LIBCLOUD_DEBUG_PRETTY_PRINT_RESPONSE',
                                       False)
 
-        if r.chunked:
-            ht += "%x\r\n" % (len(body))
-            ht += body.decode('utf-8')
-            ht += "\r\n0\r\n"
-        else:
-            if pretty_print and content_type == 'application/json':
-                try:
-                    body = json.loads(body.decode('utf-8'))
-                    body = json.dumps(body, sort_keys=True, indent=4)
-                except:
-                    # Invalid JSON or server is lying about content-type
-                    pass
-            elif pretty_print and content_type == 'text/xml':
-                try:
-                    elem = parseString(body.decode('utf-8'))
-                    body = elem.toprettyxml()
-                except Exception:
-                    # Invalid XML
-                    pass
-
-            ht += u(body)
-
-        if sys.version_info >= (2, 6) and sys.version_info < (2, 7):
-            cls = HTTPResponse
-        else:
-            cls = httplib.HTTPResponse
+        if pretty_print and content_type == 'application/json':
+            try:
+                body = json.loads(body.decode('utf-8'))
+                body = json.dumps(body, sort_keys=True, indent=4)
+            except:
+                # Invalid JSON or server is lying about content-type
+                pass
+        elif pretty_print and content_type == 'text/xml':
+            try:
+                elem = parseString(body.decode('utf-8'))
+                body = elem.toprettyxml()
+            except Exception:
+                # Invalid XML
+                pass
+
+        ht += u(body)
 
-        rr = cls(sock=fakesock(ht), method=r._method,
-                 debuglevel=r.debuglevel)
-        rr.begin()
         rv += ht
         rv += ("\n# -------- end %d:%d response ----------\n"
                % (id(self), id(r)))
 
-        rr._original_data = body
-        return (rr, rv)
+        return rv
 
     def _log_curl(self, method, url, body, headers):
         cmd = ["curl"]
@@ -173,12 +138,12 @@ class LoggingConnection(LibcloudConnection):
         return " ".join(cmd)
 
     def getresponse(self):
-        r = HttpLibResponseProxy(LibcloudConnection.getresponse(self))
+        original_response = LibcloudConnection.getresponse(self)
         if self.log is not None:
-            r, rv = self._log_response(r)
+            rv = self._log_response(HttpLibResponseProxy(original_response))
             self.log.write(rv + "\n")
             self.log.flush()
-        return r
+        return original_response
 
     def request(self, method, url, body=None, headers=None):
         headers.update({'X-LC-Request-ID': str(id(self))})