summaryrefslogtreecommitdiff
path: root/webob
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2012-01-28 04:37:39 -0500
committerChris McDonough <chrism@plope.com>2012-01-28 04:37:39 -0500
commita1e241eac8883e4f07a15a96b79e2cf41ad3e381 (patch)
treec7d31b6540e13a2c6a96db6ca706eee016b1785a /webob
parentf0806ecd790f0a1d81d7cebc6cfd04e63b8def5d (diff)
downloadwebob-a1e241eac8883e4f07a15a96b79e2cf41ad3e381.tar.gz
test textrequest and bytesrequest independently
Diffstat (limited to 'webob')
-rw-r--r--webob/__init__.py4
-rw-r--r--webob/request.py19
2 files changed, 12 insertions, 11 deletions
diff --git a/webob/__init__.py b/webob/__init__.py
index 670145f..133d84b 100644
--- a/webob/__init__.py
+++ b/webob/__init__.py
@@ -4,11 +4,11 @@ from webob.response import *
from webob.util import html_escape
__all__ = [
- 'Request', 'Response',
+ 'Request', 'Response', 'TextRequest', 'BytesRequest', 'RequestMixin',
'UTC', 'day', 'week', 'hour', 'minute', 'second', 'month', 'year',
'html_escape'
]
-BaseRequest.ResponseClass = Response
+RequestMixin.ResponseClass = Response
__version__ = '1.2b2'
diff --git a/webob/request.py b/webob/request.py
index 107f8cb..bd54e68 100644
--- a/webob/request.py
+++ b/webob/request.py
@@ -46,6 +46,7 @@ from webob.descriptors import (
converter,
converter_date,
environ_getter,
+ environ_decoder,
parse_auth,
parse_int,
parse_int_safe,
@@ -56,7 +57,6 @@ from webob.descriptors import (
serialize_range,
upath_property,
deprecated_property,
- environ_decoder,
)
from webob.etag import (
@@ -316,15 +316,15 @@ class RequestMixin(object):
you don't include any parameters in the value then existing
parameters will be preserved.
"""
- return self._content_type_raw.split(';', 1)[0]
+ return self.decode_default(self._content_type_raw.split(';', 1)[0])
def _content_type__set(self, value=None):
if value is not None:
- value = str(value)
+ value = native_(value)
if ';' not in value:
content_type = self._content_type_raw
if ';' in content_type:
value += ';' + content_type.split(';', 1)[1]
- self._content_type_raw = self.decode_default(value)
+ self._content_type_raw = value
content_type = property(_content_type__get,
_content_type__set,
@@ -510,7 +510,7 @@ class RequestMixin(object):
path = self.path_info
if not path:
return None
- slashes = ''
+ slashes = self._empty
while path.startswith(self._slash):
slashes += self._slash
path = path[1:]
@@ -1300,6 +1300,7 @@ class BytesRequest(RequestMixin):
_put_name = b'PUT'
_slash = b'/'
_questionmark = b'?'
+ _empty = b''
def encget(self, key, default=NoDefault, encattr=None):
val = self.environ.get(key, default)
@@ -1328,6 +1329,7 @@ class TextRequest(RequestMixin):
_put_name = text_('PUT')
_slash = text_('/')
_questionmark = text_('?')
+ _empty = text_('')
def encget(self, key, default=NoDefault, encattr=None):
val = self.environ.get(key, default)
@@ -1377,14 +1379,13 @@ class AdhocAttrMixin(object):
raise AttributeError(attr)
if PY3: # pragma: no cover
- class Request(AdhocAttrMixin, TextRequest):
- """ The default request implementation for Python 3"""
BaseRequest = TextRequest
else:
- class Request(AdhocAttrMixin, BytesRequest):
- """ The default request implementation for Python 2"""
BaseRequest = BytesRequest
+class Request(AdhocAttrMixin, BaseRequest):
+ """ The default request implementation """
+
def environ_from_url(path):
if SCHEME_RE.search(path):
scheme, netloc, path, qs, fragment = urlparse.urlsplit(path)