basic get request works
authorKenneth Reitz <me@kennethreitz.com>
Sun, 18 Sep 2011 02:02:06 +0000 (22:02 -0400)
committerKenneth Reitz <me@kennethreitz.com>
Sun, 18 Sep 2011 02:02:06 +0000 (22:02 -0400)
requests/models.py

index 9b6b0a539de0fa54e48a30107130687f2dc87d01..36bba15de978370c815a227a7d4cbe305fd6fa96 100644 (file)
@@ -16,11 +16,15 @@ from urllib2 import HTTPError
 from urlparse import urlparse, urlunparse, urljoin
 from datetime import datetime
 
+
+from .packages import urllib3
+print dir(urllib3)
+
 from .config import settings
 from .monkeys import Request as _Request, HTTPBasicAuthHandler, HTTPForcedBasicAuthHandler, HTTPDigestAuthHandler, HTTPRedirectHandler
 from .structures import CaseInsensitiveDict
-from .packages.poster.encode import multipart_encode
-from .packages.poster.streaminghttp import register_openers, get_handlers
+from .packages.poster.encode import multipart_encode
+from .packages.poster.streaminghttp import register_openers, get_handlers
 from .utils import dict_from_cookiejar, get_unicode_from_response, stream_decode_response_unicode, decode_gzip, stream_decode_gzip
 from .status_codes import codes
 from .exceptions import RequestException, AuthenticationError, Timeout, URLRequired, TooManyRedirects
@@ -182,16 +186,15 @@ class Request(object):
         def build(resp):
 
             response = Response()
-            response.status_code = getattr(resp, 'code', None)
+            response.status_code = getattr(resp, 'status', None)
 
             try:
-                response.headers = CaseInsensitiveDict(getattr(resp.info(), 'dict', None))
-                response.fo = resp
+                response.headers = CaseInsensitiveDict(getattr(resp, 'headers', None))
+                response.fo = resp
 
-                if self.cookiejar:
-
-                    response.cookies = dict_from_cookiejar(self.cookiejar)
+                # if self.cookiejar:
 
+                    # response.cookies = dict_from_cookiejar(self.cookiejar)
 
             except AttributeError:
                 pass
@@ -216,7 +219,7 @@ class Request(object):
                 (self.allow_redirects))
             ):
 
-                r.fo.close()
+                r.fo.close()
 
                 if not len(history) < settings.max_redirects:
                     raise TooManyRedirects()
@@ -302,6 +305,64 @@ class Request(object):
 
 
     def send(self, anyway=False):
+        """Sends the shit."""
+
+        # Safety check.
+        self._checks()
+
+        # Build the final URL.
+        url = self._build_url()
+
+        # Setup Files.
+        # Setup form data.
+        #
+        # def urlopen(self, method, url, body=None, headers=None, retries=3,
+        #         redirect=True, assert_same_host=True):
+                # req = _Request(url, data=self._enc_data, method=self.method)
+
+
+        if not self.sent or anyway:
+
+            try:
+
+                pool = urllib3.connection_from_url(url, timeout=self.timeout)
+
+                r = pool.urlopen(
+                    method=self.method,
+                    url=url,
+                    body=self.data,
+                    headers=self.headers,
+                    redirect=False,
+                    assert_same_host=False
+                )
+
+                r.socket = pool._get_conn().sock
+
+                # if self.cookiejar is not None:
+                    # self.cookiejar.extract_cookies(resp, req)
+
+            # except (urllib2.HTTPError, urllib2.URLError), why:
+            except Exception, why:
+                # if hasattr(why, 'reason'):
+                #     if isinstance(why.reason, socket.timeout):
+                #         why = Timeout(why)
+
+                # self._build_response(why, is_error=True)
+                print 'FUCK'
+                print why
+
+            else:
+                self._build_response(r)
+                self.response.ok = True
+
+
+        self.sent = self.response.ok
+
+        return self.sent
+
+
+
+    def old_send(self, anyway=False):
         """Sends the request. Returns True of successful, false if not.
         If there was an HTTPError during transmission,
         self.response.status_code will contain the HTTPError code.