aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework/parsers.py
diff options
context:
space:
mode:
authorTom Christie2011-04-11 11:54:26 +0100
committerTom Christie2011-04-11 11:54:26 +0100
commitd4ed17845650d9a548ff0df362f3469878db2f91 (patch)
tree27dd8cab495f01ad17b10c89b8623413ebeecd5d /djangorestframework/parsers.py
parent338b5213fa6232dc6115b214495cf13ded6a3a17 (diff)
downloaddjango-rest-framework-d4ed17845650d9a548ff0df362f3469878db2f91.tar.bz2
More tests passing
Diffstat (limited to 'djangorestframework/parsers.py')
-rw-r--r--djangorestframework/parsers.py43
1 files changed, 12 insertions, 31 deletions
diff --git a/djangorestframework/parsers.py b/djangorestframework/parsers.py
index 1503342c..5b236647 100644
--- a/djangorestframework/parsers.py
+++ b/djangorestframework/parsers.py
@@ -27,38 +27,7 @@ except ImportError:
class ParserMixin(object):
parsers = ()
- def parse(self, stream, content_type):
- """
- Parse the request content.
-
- May raise a 415 ResponseException (Unsupported Media Type),
- or a 400 ResponseException (Bad Request).
- """
- parsers = as_tuple(self.parsers)
- parser = None
- for parser_cls in parsers:
- if parser_cls.handles(content_type):
- parser = parser_cls(self)
- break
-
- if parser is None:
- raise ResponseException(status.HTTP_415_UNSUPPORTED_MEDIA_TYPE,
- {'error': 'Unsupported media type in request \'%s\'.' %
- content_type.media_type})
-
- return parser.parse(stream)
-
- @property
- def parsed_media_types(self):
- """Return an list of all the media types that this ParserMixin can parse."""
- return [parser.media_type for parser in self.parsers]
-
- @property
- def default_parser(self):
- """Return the ParerMixin's most prefered emitter.
- (This has no behavioural effect, but is may be used by documenting emitters)"""
- return self.parsers[0]
class BaseParser(object):
@@ -122,6 +91,18 @@ class DataFlatener(object):
return False
+class PlainTextParser(BaseParser):
+ """
+ Plain text parser.
+
+ Simply returns the content of the stream
+ """
+ media_type = MediaType('text/plain')
+
+ def parse(self, stream):
+ return stream.read()
+
+
class FormParser(BaseParser, DataFlatener):
"""The default parser for form data.
Return a dict containing a single value for each non-reserved parameter.