From 2ebdd6f99eff0f3538cc19019f1d6a36ac319a13 Mon Sep 17 00:00:00 2001 From: Eli Ribble Date: Thu, 23 Jun 2016 11:29:15 -0600 Subject: [PATCH] Add some simple tools for parsing values out of endpoints This will help us with some basic validation --- vanth/pages/tools.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 vanth/pages/tools.py diff --git a/vanth/pages/tools.py b/vanth/pages/tools.py new file mode 100644 index 0000000..0120a9b --- /dev/null +++ b/vanth/pages/tools.py @@ -0,0 +1,26 @@ +import functools +import json + +import flask + + +def parse(args): + def _decorate(request_handler): + @functools.wraps(request_handler) + def _parse(): + values = {} + missing_parameters = [] + for key, converter in args.items(): + supplied = flask.request.form.get(key) + if supplied is None: + missing_parameters.append(key) + else: + values[key] = converter(supplied) + if missing_parameters: + return (json.dumps({'errors': [{ + 'title' : "Missing required paramter '{}'".format(parameter), + 'code' : "missing-required-paramter", + } for parameter in missing_parameters]}), 400, {}) + return request_handler(values) + return _parse + return _decorate