diff --git a/requests/hooks.py b/requests/hooks.py index 3560b89d..13d0eb5c 100644 --- a/requests/hooks.py +++ b/requests/hooks.py @@ -12,6 +12,9 @@ Available hooks: A dictionary of the arguments being sent to Request(). ``pre_request``: + The Request object, directly after being created. + +``pre_send``: The Request object, directly before being sent. ``post_request``: @@ -25,7 +28,7 @@ Available hooks: import traceback -HOOKS = ('args', 'pre_request', 'post_request', 'response') +HOOKS = ('args', 'pre_request', 'pre_send', 'post_request', 'response') def dispatch_hook(key, hooks, hook_data): diff --git a/requests/models.py b/requests/models.py index 184f91b5..be6d2a66 100644 --- a/requests/models.py +++ b/requests/models.py @@ -570,6 +570,10 @@ class Request(object): if cookie_header is not None: self.headers['Cookie'] = cookie_header + # Pre-send hook. + r = dispatch_hook('pre_send', self.hooks, self) + self.__dict__.update(r.__dict__) + try: # The inner try .. except re-raises certain exceptions as # internal exception types; the outer suppresses exceptions