from datetime import datetime
from .config import settings
+from .hooks import dispatch_hook
from .monkeys import Request as _Request, HTTPBasicAuthHandler, HTTPForcedBasicAuthHandler, HTTPDigestAuthHandler, HTTPRedirectHandler
from .structures import CaseInsensitiveDict
from .packages.poster.encode import multipart_encode
def __init__(self,
url=None, headers=dict(), files=None, method=None, data=dict(),
params=dict(), auth=None, cookiejar=None, timeout=None, redirect=False,
- allow_redirects=False, proxies=None):
+ allow_redirects=False, proxies=None, hooks=None):
#: Float describ the timeout of the request.
# (Use socket.setdefaulttimeout() as fallback)
#: True if Request has been sent.
self.sent = False
+ #: Dictionary of event hook callbacks.
+ self.hooks = hooks
+
# Header manipulation and defaults.
try:
opener = self._get_opener()
try:
+
+ # pre-request hook.
+ self.__dict__.update(
+ dispatch_hook('pre_request',
+ self.hooks, self.__dict__)
+ )
+
resp = opener(req, timeout=self.timeout)
+
except TypeError, err:
# timeout argument is new since Python v2.6
- if not "timeout" in str(err):
+ if not 'timeout' in str(err):
raise
if settings.timeout_fallback: