session work

merge kwargs and such
This commit is contained in:
Kenneth Reitz
2011-09-25 20:36:30 -04:00
parent dc7b4e7d32
commit 0cf0bde158
+50 -9
View 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'])