Source code for mongorest.wrappers
# -*- encoding: UTF-8 -*-
from __future__ import absolute_import, unicode_literals
import io
from collections import OrderedDict
from werkzeug.wrappers import (
Request as WerkzeugRequest,
Response as WerkzeugResponse,
)
from .utils import deserialize
__all__ = [
'Request',
'Response',
]
[docs]class Request(WerkzeugRequest):
"""
Wrapper around Werkzeug Request object, provides easier access to data
"""
def __init__(self, environ, populate_request=True, shallow=False):
super(Request, self).__init__(environ, populate_request, shallow)
args = {}
for key, value in self.args.items():
try:
value = deserialize(value, object_pairs_hook=OrderedDict)
finally:
args[key] = value
form = {}
for key, value in self.form.items():
try:
value = deserialize(value, object_pairs_hook=OrderedDict)
finally:
form[key] = value
self.args = args
self.form = form
self.json = deserialize(self.data.decode() or {})
self.environ['wsgi.input'] = io.BytesIO(self.data)
[docs]class Response(WerkzeugResponse):
"""
Wrapper around Werkzeug Response object, provides easier access to data
"""
default_mimetype = 'application/json'
@property
def json(self):
return deserialize(self.data.decode() or {})