aboutsummaryrefslogtreecommitdiff
path: root/requests/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'requests/api.py')
-rw-r--r--requests/api.py116
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):