pre-send hook
authorKenneth Reitz <me@kennethreitz.com>
Wed, 2 May 2012 23:09:18 +0000 (19:09 -0400)
committerKenneth Reitz <me@kennethreitz.com>
Wed, 2 May 2012 23:09:18 +0000 (19:09 -0400)
#516

requests/hooks.py
requests/models.py

index 3560b89de710e43a8bdaed54d185ae58d44d7df9..13d0eb5c25ebda4328398ffa971efa311be4d2bb 100644 (file)
@@ -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):
index 184f91b58bd69cd82e15705ed24d18b6dc1f7329..be6d2a66a8e8ec43d1d646624bb1ce93e0ae4d79 100644 (file)
@@ -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