"""
-import requests
import urllib
import urllib2
import socket
from urllib2 import HTTPError
from urlparse import urlparse
+from datetime import datetime
+from .config import settings
from .monkeys import Request as _Request, HTTPBasicAuthHandler, HTTPDigestAuthHandler, HTTPRedirectHandler
from .structures import CaseInsensitiveDict
from .packages.poster.encode import multipart_encode
from .exceptions import RequestException, AuthenticationError, Timeout, URLRequired, InvalidMethod
+REDIRECT_STATI = (301, 302, 303, 307)
+
class Request(object):
"""The :class:`Request <models.Request>` object. It carries out all functionality of
r = build(resp)
+ if r.status_code in REDIRECT_STATI:
+ self.redirect = True
+
if self.redirect:
while (
url = r.headers['location']
- # Facilitate for non-RFC2616-compliant 'location' headers
+ # Facilitate non-RFC2616-compliant 'location' headers
# (e.g. '/path/to/resource' instead of 'http://domain.tld/path/to/resource')
if not urlparse(url).netloc:
parent_url_components = urlparse(self.url)
request = Request(
url, self.headers, self.files, method,
self.data, self.params, self.auth, self.cookiejar,
- redirect=False
+ redirect=True
)
request.send()
r = request.response
self._checks()
success = False
+ # Logging
+ if settings.verbose:
+ settings.verbose.write('%s %s %s\n' % (
+ datetime.now().isoformat(), self.method, self.url
+ ))
+
+
url = self._build_url()
if self.method in ('GET', 'HEAD', 'DELETE'):
req = _Request(url, method=self.method)
self.sent = self.response.ok
+
return self.sent