Skip to content

Instantly share code, notes, and snippets.

@DeaconDesperado
Last active December 27, 2015 07:59
Show Gist options
  • Save DeaconDesperado/7292574 to your computer and use it in GitHub Desktop.
Save DeaconDesperado/7292574 to your computer and use it in GitHub Desktop.
Set custom property for encoding on werkzeug request
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