From: Kenneth Reitz Date: Sun, 23 Oct 2011 00:28:06 +0000 (-0400) Subject: use config throughout models X-Git-Tag: v0.7.0~6^2~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=903f96cc6a948cdb86a2d79c23f93d27a258c4ab;p=services%2Fpython-requests.git use config throughout models --- diff --git a/requests/models.py b/requests/models.py index d58e4ad..ac235a7 100644 --- a/requests/models.py +++ b/requests/models.py @@ -9,22 +9,22 @@ requests.models import urllib import urllib2 import socket -import codecs import zlib - from urllib2 import HTTPError from urlparse import urlparse, urlunparse, urljoin from datetime import datetime -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 .utils import dict_from_cookiejar, get_unicode_from_response, stream_decode_response_unicode, decode_gzip, stream_decode_gzip +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 Timeout, URLRequired, TooManyRedirects +from .monkeys import Request as _Request +from .monkeys import ( + HTTPBasicAuthHandler, HTTPForcedBasicAuthHandler, + HTTPDigestAuthHandler, HTTPRedirectHandler) REDIRECT_STATI = (codes.moved, codes.found, codes.other, codes.temporary_moved) @@ -37,9 +37,20 @@ class Request(object): """ def __init__(self, - url=None, headers=dict(), files=None, method=None, data=dict(), - params=dict(), auth=None, cookies=None, timeout=None, redirect=False, - allow_redirects=False, proxies=None, hooks=None): + url=None, + headers=dict(), + files=None, + method=None, + data=dict(), + params=dict(), + auth=None, + cookies=None, + timeout=None, + redirect=False, + allow_redirects=False, + proxies=None, + hooks=None, + config=None): #: Float describes the timeout of the request. # (Use socket.setdefaulttimeout() as fallback) @@ -93,6 +104,9 @@ class Request(object): #: CookieJar to attach to :class:`Request `. self.cookies = cookies + #: Dictionary of configurations for this request. + self.config = config + #: True if Request has been sent. self.sent = False @@ -100,16 +114,15 @@ class Request(object): self.hooks = hooks # Header manipulation and defaults. - - if settings.accept_gzip: - settings.base_headers.update({'Accept-Encoding': 'gzip'}) + if self.config.get('accept_gzip'): + self.headers.update({'Accept-Encoding': 'gzip'}) if headers: headers = CaseInsensitiveDict(self.headers) else: headers = CaseInsensitiveDict() - for (k, v) in settings.base_headers.items(): + for (k, v) in self.config.get('base_headers', {}).items(): if k not in headers: headers[k] = v @@ -185,6 +198,7 @@ class Request(object): def build(resp): response = Response() + response.config = self.config response.status_code = getattr(resp, 'code', None) try: @@ -219,7 +233,7 @@ class Request(object): r.raw.close() - if not len(history) < settings.max_redirects: + if not len(history) < self.config.get('max_redirects'): raise TooManyRedirects() history.append(r) @@ -243,9 +257,16 @@ class Request(object): method = self.method request = Request( - url, self.headers, self.files, method, - self.data, self.params, self.auth, self.cookies, - redirect=True + url=url, + headers=self.headers, + files=self.files, + method=method, + # data=self.data, + # params=self.params, + auth=self.auth, + cookies=self.cookies, + redirect=True, + config=self.config ) request.send() r = request.response @@ -313,8 +334,8 @@ class Request(object): self._checks() # Logging - if settings.verbose: - settings.verbose.write('%s %s %s\n' % ( + if self.config.get('verbose'): + self.config.get('verbose').write('%s %s %s\n' % ( datetime.now().isoformat(), self.method, self.url )) @@ -353,14 +374,14 @@ class Request(object): if not 'timeout' in str(err): raise - if settings.timeout_fallback: + if self.config.get('timeout_fallback'): # fall-back and use global socket timeout (This is not thread-safe!) old_timeout = socket.getdefaulttimeout() socket.setdefaulttimeout(self.timeout) resp = opener(req) - if settings.timeout_fallback: + if self.config.get('timeout_fallback'): # restore global timeout socket.setdefaulttimeout(old_timeout) @@ -429,6 +450,9 @@ class Response(object): #: A dictionary of Cookies the server sent back. self.cookies = None + #: Dictionary of configurations for this request. + self.config = None + def __repr__(self): return '' % (self.status_code) @@ -460,7 +484,7 @@ class Response(object): if 'gzip' in self.headers.get('content-encoding', ''): gen = stream_decode_gzip(gen) if decode_unicode is None: - decode_unicode = settings.decode_unicode + decode_unicode = self.config.get('decode_unicode') if decode_unicode: gen = stream_decode_response_unicode(gen, self) return gen @@ -489,7 +513,7 @@ class Response(object): pass # Decode unicode content. - if settings.decode_unicode: + if self.config.get('decode_unicode'): self._content = get_unicode_from_response(self) self._content_consumed = True