aboutsummaryrefslogtreecommitdiff
path: root/requests/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'requests/api.py')
-rw-r--r--requests/api.py100
1 files changed, 50 insertions, 50 deletions
diff --git a/requests/api.py b/requests/api.py
index 8e328d2..0cea63d 100644
--- a/requests/api.py
+++ b/requests/api.py
@@ -12,23 +12,28 @@ This module impliments the Requests API.
"""
import config
-from .models import Request, Response, AuthManager, AuthObject, auth_manager
+from .models import Request, Response, AuthObject
+from .status_codes import codes
+from .hooks import dispatch_hook
+from .utils import cookiejar_from_dict
+from urlparse import urlparse
__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):
+ timeout=None, allow_redirects=False, proxies=None, hooks=None):
- """Constructs and sends a :class:`Request <models.Request>`. Returns :class:`Response <models.Response>` object.
+ """Constructs and sends a :class:`Request <models.Request>`.
+ Returns :class:`Response <models.Response>` object.
:param method: method for the new :class:`Request` object.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary or bytes to be sent in the query string for the :class:`Request`.
: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) CookieJar object 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 timeout: (optional) Float describing the timeout of the request.
@@ -36,7 +41,12 @@ def request(method, url,
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
"""
- r = Request(
+ if cookies is None:
+ cookies = {}
+
+ cookies = cookiejar_from_dict(cookies)
+
+ args = dict(
method = method,
url = url,
data = data,
@@ -44,60 +54,65 @@ def request(method, url,
headers = headers,
cookiejar = cookies,
files = files,
- auth = auth or auth_manager.get_auth(url),
+ auth = auth,
timeout = timeout or config.settings.timeout,
allow_redirects = allow_redirects,
- proxies = proxies
+ proxies = proxies or config.settings.proxies,
)
+ # Arguments manipulation hook.
+ args = dispatch_hook('args', hooks, args)
+
+ r = Request(**args)
+
+ # Pre-request hook.
+ r = dispatch_hook('pre_request', hooks, 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)
+
return r.response
-def get(url,
- params=None, headers=None, cookies=None, auth=None, timeout=None,
- proxies=None):
+def get(url, **kwargs):
"""Sends a GET request. Returns :class:`Response` object.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary of parameters, or bytes, to be sent in the query string for the :class:`Request`.
:param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`.
- :param cookies: (optional) CookieJar object to send with the :class:`Request`.
+ :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.
:param auth: (optional) AuthObject to enable Basic HTTP Auth.
:param timeout: (optional) Float describing the timeout of the request.
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
"""
- return request('GET', url,
- params=params, headers=headers, cookies=cookies, auth=auth,
- timeout=timeout, proxies=proxies)
+ return request('GET', url, **kwargs)
-def head(url,
- params=None, headers=None, cookies=None, auth=None, timeout=None,
- proxies=None):
+def head(url, **kwargs):
"""Sends a HEAD request. Returns :class:`Response` object.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary of parameters, or bytes, to be sent in the query string for the :class:`Request`.
:param headers: (optional) Dictionary of HTTP Headers to sent with the :class:`Request`.
- :param cookies: (optional) CookieJar object to send with the :class:`Request`.
+ :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.
:param auth: (optional) AuthObject to enable Basic HTTP Auth.
:param timeout: (optional) Float describing the timeout of the request.
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
"""
- return request('HEAD', url,
- params=params, headers=headers, cookies=cookies, auth=auth,
- timeout=timeout, proxies=proxies)
+ return request('HEAD', url, **kwargs)
-def post(url,
- data='', headers=None, files=None, cookies=None, auth=None, timeout=None,
- allow_redirects=False, params=None, proxies=None):
+def post(url, data='', **kwargs):
"""Sends a POST request. Returns :class:`Response` object.
@@ -105,7 +120,7 @@ def post(url,
:param data: (optional) Dictionary or bytes to send in the body of the :class:`Request`.
:param headers: (optional) Dictionary of HTTP Headers to sent with the :class:`Request`.
:param files: (optional) Dictionary of 'filename': file-like-objects for multipart encoding upload.
- :param cookies: (optional) CookieJar object to send with the :class:`Request`.
+ :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.
:param auth: (optional) AuthObject to enable Basic HTTP Auth.
:param timeout: (optional) Float describing the timeout of the request.
:param allow_redirects: (optional) Boolean. Set to True if redirect following is allowed.
@@ -113,21 +128,17 @@ def post(url,
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
"""
- return request('POST', url,
- params=params, data=data, headers=headers, files=files,
- cookies=cookies, auth=auth, timeout=timeout,
- allow_redirects=allow_redirects, proxies=proxies)
+ return request('POST', url, data=data, **kwargs)
-def put(url, data='', headers=None, files=None, cookies=None, auth=None,
- timeout=None, allow_redirects=False, params=None, proxies=None):
+def put(url, data='', **kwargs):
"""Sends a PUT request. Returns :class:`Response` object.
:param url: URL for the new :class:`Request` object.
:param data: (optional) Dictionary or bytes to send in the body of the :class:`Request`.
:param headers: (optional) Dictionary of HTTP Headers to sent with the :class:`Request`.
:param files: (optional) Dictionary of 'filename': file-like-objects for multipart encoding upload.
- :param cookies: (optional) CookieJar object to send with the :class:`Request`.
+ :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.
:param auth: (optional) AuthObject to enable Basic HTTP Auth.
:param timeout: (optional) Float describing the timeout of the request.
:param allow_redirects: (optional) Boolean. Set to True if redirect following is allowed.
@@ -135,21 +146,17 @@ def put(url, data='', headers=None, files=None, cookies=None, auth=None,
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
"""
- return request('PUT', url,
- params=params, data=data, headers=headers, files=files,
- cookies=cookies, auth=auth, timeout=timeout,
- allow_redirects=allow_redirects, proxies=proxies)
+ return request('PUT', url, data=data, **kwargs)
-def patch(url, data='', headers=None, files=None, cookies=None, auth=None,
- timeout=None, allow_redirects=False, params=None, proxies=None):
+def patch(url, data='', **kwargs):
"""Sends a PATCH request. Returns :class:`Response` object.
:param url: URL for the new :class:`Request` object.
:param data: (optional) Dictionary or bytes to send in the body of the :class:`Request`.
:param headers: (optional) Dictionary of HTTP Headers to sent with the :class:`Request`.
:param files: (optional) Dictionary of 'filename': file-like-objects for multipart encoding upload.
- :param cookies: (optional) CookieJar object to send with the :class:`Request`.
+ :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.
:param auth: (optional) AuthObject to enable Basic HTTP Auth.
:param timeout: (optional) Float describing the timeout of the request.
:param allow_redirects: (optional) Boolean. Set to True if redirect following is allowed.
@@ -157,28 +164,21 @@ def patch(url, data='', headers=None, files=None, cookies=None, auth=None,
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
"""
- return request('PATCH', url,
- params=params, data=data, headers=headers, files=files,
- cookies=cookies, auth=auth, timeout=timeout,
- allow_redirects=allow_redirects, proxies=proxies)
+ return request('PATCH', url, **kwargs)
-def delete(url,
- params=None, headers=None, cookies=None, auth=None, timeout=None,
- allow_redirects=False, proxies=None):
+def delete(url, **kwargs):
"""Sends a DELETE request. Returns :class:`Response` object.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary of parameters, or bytes, to be sent in the query string for the :class:`Request`.
:param headers: (optional) Dictionary of HTTP Headers to sent with the :class:`Request`.
- :param cookies: (optional) CookieJar object to send with the :class:`Request`.
+ :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.
:param auth: (optional) AuthObject to enable Basic HTTP Auth.
:param timeout: (optional) Float describing the timeout of the request.
:param allow_redirects: (optional) Boolean. Set to True if redirect following is allowed.
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
"""
- return request('DELETE', url,
- params=params, headers=headers, cookies=cookies, auth=auth,
- timeout=timeout, allow_redirects=allow_redirects, proxies=proxies)
+ return request('DELETE', url, **kwargs)