diff options
Diffstat (limited to 'requests/api.py')
-rw-r--r-- | requests/api.py | 116 |
1 files changed, 50 insertions, 66 deletions
diff --git a/requests/api.py b/requests/api.py index 1b847b7..9e0c96f 100644 --- a/requests/api.py +++ b/requests/api.py @@ -4,26 +4,30 @@ requests.api ~~~~~~~~~~~~ -This module impliments the Requests API. +This module implements the Requests API. :copyright: (c) 2011 by Kenneth Reitz. :license: ISC, see LICENSE for more details. """ -import config -from .models import Request, Response, AuthObject -from .status_codes import codes -from .hooks import dispatch_hook -from .utils import cookiejar_from_dict, header_expand +from .sessions import session -__all__ = ('request', 'get', 'head', 'post', 'patch', 'put', 'delete') - def request(method, url, - params=None, data=None, headers=None, cookies=None, files=None, auth=None, - timeout=None, allow_redirects=False, proxies=None, hooks=None, return_response=True): - + params=None, + data=None, + headers=None, + cookies=None, + files=None, + auth=None, + timeout=None, + allow_redirects=False, + proxies=None, + hooks=None, + return_response=True, + prefetch=False, + config=None): """Constructs and sends a :class:`Request <Request>`. Returns :class:`Response <Response>` object. @@ -33,76 +37,56 @@ def request(method, url, :param data: (optional) Dictionary or bytes to send in the body of the :class:`Request`. :param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`. :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`. - :param files: (optional) Dictionary of 'filename': file-like-objects for multipart encoding upload. - :param auth: (optional) AuthObject to enable Basic HTTP Auth. + :param files: (optional) Dictionary of 'name': file-like-objects (or {'name': ('filename', fileobj)}) for multipart encoding upload. + :param auth: (optional) Auth typle to enable Basic/Digest/Custom HTTP Auth. :param timeout: (optional) Float describing the timeout of the request. :param allow_redirects: (optional) Boolean. Set to True if POST/PUT/DELETE redirect following is allowed. :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy. :param return_response: (optional) If False, an un-sent Request object will returned. + :param config: (optional) A configuration dictionary. """ - method = str(method).upper() - - if cookies is None: - cookies = {} - - cookies = cookiejar_from_dict(cookies) - - # Expand header values - if headers: - for k, v in headers.items() or {}: - headers[k] = header_expand(v) - - args = dict( - method = method, - url = url, - data = data, - params = params, - headers = headers, - cookiejar = cookies, - files = files, - auth = auth, - hooks = hooks, - timeout = timeout or config.settings.timeout, - allow_redirects = allow_redirects, - proxies = proxies or config.settings.proxies, + s = session() + return s.request( + method=method, + url=url, + params=params, + data=data, + headers=headers, + cookies=cookies, + files=files, + auth=auth, + timeout=timeout, + allow_redirects=allow_redirects, + proxies=proxies, + hooks=hooks, + return_response=return_response, + config=config, + prefetch=prefetch ) - # Arguments manipulation hook. - args = dispatch_hook('args', hooks, args) - - r = Request(**args) - - # Pre-request hook. - r = dispatch_hook('pre_request', hooks, r) - # Don't send if asked nicely. - if not return_response: - return r - # Send the HTTP Request. - r.send() - - # Post-request hook. - r = dispatch_hook('post_request', hooks, r) - - # Response manipulation hook. - r.response = dispatch_hook('response', hooks, r.response) +def get(url, **kwargs): + """Sends a GET request. Returns :class:`Response` object. - return r.response + :param url: URL for the new :class:`Request` object. + :param **kwargs: Optional arguments that ``request`` takes. + """ + kwargs.setdefault('allow_redirects', True) + return request('get', url, **kwargs) -def get(url, **kwargs): - """Sends a GET request. Returns :class:`Response` object. +def options(url, **kwargs): + """Sends a OPTIONS request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. :param **kwargs: Optional arguments that ``request`` takes. """ - kwargs.setdefault('allow_redirects', True) - return request('GET', url, **kwargs) + return request('options', url, **kwargs) def head(url, **kwargs): @@ -113,10 +97,10 @@ def head(url, **kwargs): """ kwargs.setdefault('allow_redirects', True) - return request('HEAD', url, **kwargs) + return request('head', url, **kwargs) -def post(url, data='', **kwargs): +def post(url, data=None, **kwargs): """Sends a POST request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. @@ -127,7 +111,7 @@ def post(url, data='', **kwargs): return request('post', url, data=data, **kwargs) -def put(url, data='', **kwargs): +def put(url, data=None, **kwargs): """Sends a PUT request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. @@ -138,7 +122,7 @@ def put(url, data='', **kwargs): return request('put', url, data=data, **kwargs) -def patch(url, data='', **kwargs): +def patch(url, data=None, **kwargs): """Sends a PATCH request. Returns :class:`Response` object. :param url: URL for the new :class:`Request` object. @@ -146,7 +130,7 @@ def patch(url, data='', **kwargs): :param **kwargs: Optional arguments that ``request`` takes. """ - return request('patch', url, **kwargs) + return request('patch', url, data=data, **kwargs) def delete(url, **kwargs): |