src/pyams_utils/protocol/http.py
branchdev-tf
changeset 427 63284c98cdc1
parent 292 b338586588ad
--- a/src/pyams_utils/protocol/http.py	Sat Nov 23 01:24:11 2019 +0100
+++ b/src/pyams_utils/protocol/http.py	Sat Nov 23 14:57:24 2019 +0100
@@ -10,49 +10,54 @@
 # FOR A PARTICULAR PURPOSE.
 #
 
+"""PyAMS_utils.protocol.http module
+
+This module provides an HTTP client class, which allows to easilly define proxies and
+authentication headers.
+"""
+
+import urllib.parse
+
+import httplib2
+
+
 __docformat__ = 'restructuredtext'
 
 
-# import standard library
-import httplib2
-import urllib.parse
-
-# import interfaces
-
-# import packages
-
-
-class HTTPClient(object):
+class HTTPClient:
+    # pylint: disable=too-many-instance-attributes
     """HTTP client with proxy support"""
 
-    def __init__(self, method, protocol, servername, url, params={}, credentials=(),
-                 proxy=(), rdns=True, proxy_auth=(), timeout=None, headers={}):
+    def __init__(self, method, protocol, servername, url, params=None, credentials=(),
+                 proxy=(), rdns=True, proxy_auth=(), timeout=None, headers=None):
+        # pylint: disable=too-many-arguments
         """Intialize HTTP connection"""
         self.connection = None
         self.method = method
         self.protocol = protocol
         self.servername = servername
         self.url = url
-        self.params = params
+        self.params = params or {}
         self.location = None
         self.credentials = credentials
         self.proxy = proxy
         self.rdns = rdns
         self.proxy_auth = proxy_auth
         self.timeout = timeout
-        self.headers = headers
-        if 'User-Agent' not in headers:
+        self.headers = headers or {}
+        if 'User-Agent' not in self.headers:
             self.headers['User-Agent'] = 'PyAMS HTTP Client/1.0'
 
     def get_response(self):
         """Common HTTP request"""
         if self.proxy and (len(self.proxy) == 2):
-            proxy_info = httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_HTTP,
-                                            proxy_host=self.proxy[0],
-                                            proxy_port=self.proxy[1],
-                                            proxy_rdns=self.rdns,
-                                            proxy_user=self.proxy_auth and self.proxy_auth[0] or None,
-                                            proxy_pass=self.proxy_auth and self.proxy_auth[1] or None)
+            proxy_info = httplib2.ProxyInfo(
+                httplib2.socks.PROXY_TYPE_HTTP,
+                proxy_host=self.proxy[0],
+                proxy_port=self.proxy[1],
+                proxy_rdns=self.rdns,
+                proxy_user=self.proxy_auth and self.proxy_auth[0] or None,
+                proxy_pass=self.proxy_auth and self.proxy_auth[1] or None)
         else:
             proxy_info = None
         http = httplib2.Http(timeout=self.timeout, proxy_info=proxy_info)
@@ -65,14 +70,17 @@
         return response, content
 
 
-def get_client(method, protocol, servername, url, params={}, credentials=(), proxy=(),
-               rdns=True, proxy_auth=(), timeout=None, headers={}):
+def get_client(method, protocol, servername, url, params=None, credentials=(), proxy=(),
+               rdns=True, proxy_auth=(), timeout=None, headers=None):
+    # pylint: disable=too-many-arguments
     """HTTP client factory"""
     return HTTPClient(method, protocol, servername, url, params, credentials, proxy,
                       rdns, proxy_auth, timeout, headers)
 
 
-def get_client_from_url(url, credentials=(), proxy=(), rdns=True, proxy_auth=(), timeout=None, headers={}):
+def get_client_from_url(url, credentials=(), proxy=(), rdns=True, proxy_auth=(), timeout=None,
+                        headers=None):
+    # pylint: disable=too-many-arguments
     """HTTP client factory from URL"""
     elements = urllib.parse.urlparse(url)
     return HTTPClient('GET', elements.scheme, elements.netloc, elements.path, elements.params,