mirror of
https://github.com/kennethreitz/requests.git
synced 2026-06-05 22:50:18 +00:00
session work
merge kwargs and such
This commit is contained in:
+50
-9
@@ -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'])
|
||||
|
||||
Reference in New Issue
Block a user