session work
authorKenneth Reitz <me@kennethreitz.com>
Mon, 26 Sep 2011 00:36:30 +0000 (20:36 -0400)
committerKenneth Reitz <me@kennethreitz.com>
Mon, 26 Sep 2011 00:36:30 +0000 (20:36 -0400)
merge kwargs and such

requests/sessions.py

index 910b1af87e6953e8361803ab8aa13a321a81c591..a5c13fbd33a846579ff1a29eaf0d03579db27fbf 100644 (file)
@@ -12,9 +12,30 @@ requests (cookies, auth, proxies).
 import cookielib
 
 from . import api
+from .config import get_config
 from .utils import add_dict_to_cookiejar
 
 
+def merge_kwargs(local_kwargs, default_kwargs):
+    """Merges kwarg dictionaries.
+    """
+
+    # Bypass if not a dictionary (e.g. timeout)
+    if not hasattr(local_kwargs, 'items'):
+        return local_kwargs
+
+    kwargs = default_kwargs.copy()
+    kwargs.update(local_kwargs)
+
+    # Remove keys that are set to None.
+    for (k,v) in local_kwargs.items():
+        if v is None:
+            del kwargs[k]
+
+    return kwargs
+
+
+
 class Session(object):
     """A Requests session."""
 
@@ -23,19 +44,39 @@ class Session(object):
         'config'
     ]
 
-    def __init__(self, **kwargs):
+    def __init__(self,
+        headers=None,
+        cookies=None,
+        auth=None,
+        timeout=None,
+        proxies=None,
+        hooks=None,
+        config=None):
 
         # Set up a CookieJar to be used by default
-        self.cookies = cookielib.FileCookieJar()
-        self.config = kwargs.get('config') or dict()
+        # self.cookies = cookielib.FileCookieJar()
+        # self.config = kwargs.get('config')
+        # self.configs =
+        self.headers = headers
+        self.cookies = cookies
+        self.auth = auth
+        self.timeout = timeout
+        self.proxies = proxies
+        self.hooks = hooks
+        self.config = get_config(config)
+        # print self.config
 
         # Map args from kwargs to instance-local variables
-        map(lambda k, v: (k in self.__attrs__) and setattr(self, k, v),
-                kwargs.iterkeys(), kwargs.itervalues())
+        map(lambda k, v: (k in self.__attrs__) and setattr(self, k, v),
+                kwargs.iterkeys(), kwargs.itervalues())
 
         # Map and wrap requests.api methods
         self._map_api_methods()
 
+
+    def get(url, **kwargs):
+
+
     def __repr__(self):
         return '<requests-client at 0x%x>' % (id(self))
 
@@ -61,10 +102,10 @@ class Session(object):
 
                 # If a session request has a cookie_dict, inject the
                 # values into the existing CookieJar instead.
-                if isinstance(kwargs.get('cookies', None), dict):
-                    kwargs['cookies'] = add_dict_to_cookiejar(
-                        inst_attrs['cookies'], kwargs['cookies']
-                    )
+                if isinstance(kwargs.get('cookies', None), dict):
+                    kwargs['cookies'] = add_dict_to_cookiejar(
+                        inst_attrs['cookies'], kwargs['cookies']
+                    )
 
                 if kwargs.get('headers', None) and inst_attrs.get('headers', None):
                     kwargs['headers'].update(inst_attrs['headers'])