move hooks into api layer only
authorKenneth Reitz <me@kennethreitz.com>
Wed, 17 Aug 2011 04:40:28 +0000 (00:40 -0400)
committerKenneth Reitz <me@kennethreitz.com>
Wed, 17 Aug 2011 04:40:28 +0000 (00:40 -0400)
requests/api.py
requests/models.py

index e6ff715c8f27dd8398184c5b60e0fd8d32d8250e..c5a81c376ad80b01ee4c1b1ff960f5230b075cf1 100644 (file)
@@ -53,12 +53,24 @@ def request(method, url,
         proxies = proxies or config.settings.proxies,
     )
 
+    # Arguments manipulation hook.
     args = dispatch_hook('args', hooks, args)
 
+
     r = Request(hooks=hooks, **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
 
 
index f9670a4ca1142b979744d53ab8250bfddff3990b..c802f03038657d1a4dfdcba472dbc6f9a402f55d 100644 (file)
@@ -16,7 +16,6 @@ from urlparse import urlparse, urlunparse, urljoin
 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
@@ -328,12 +327,6 @@ class Request(object):
                 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:
@@ -370,9 +363,6 @@ class Request(object):
 
         self.sent = self.response.ok
 
-        self.__dict__.update(
-            dispatch_hook('post_request', self.hooks, self.__dict__))
-
         return self.sent