Last active
December 27, 2015 07:59
-
-
Save DeaconDesperado/7292574 to your computer and use it in GitHub Desktop.
Set custom property for encoding on werkzeug request
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from werkzeug.wrappers import Request, Response | |
from werkzeug.formparser import FormDataParser | |
from werkzeug.serving import run_simple | |
from werkzeug.utils import cached_property | |
from werkzeug.datastructures import ImmutableMultiDict | |
def encode(value): | |
#Catch encoding errors here | |
return 'foo!' | |
class MixInRequest(Request): | |
max_content_length = 1024 * 1024 * 4 | |
@cached_property | |
def lcl_data(self): | |
if self.method in ['POST','PUT','PATCH']: | |
fields = dict([(key, encode(val)) for (key,val) in self.form.items()]) | |
return ImmutableMultiDict(fields) | |
return None | |
class Shortly(object): | |
def dispatch_request(self, request): | |
print request.lcl_data | |
return Response('Hello World!') | |
def wsgi_app(self, environ, start_response): | |
request = MixInRequest(environ) | |
response = self.dispatch_request(request) | |
return response(environ, start_response) | |
def __call__(self, environ, start_response): | |
return self.wsgi_app(environ, start_response) | |
def create_app(): | |
app = Shortly() | |
return app | |
if __name__ == '__main__': | |
app = create_app() | |
run_simple('localhost', 8080, app, use_reloader=True) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment