diff options
Diffstat (limited to 'lib/Server/__init__.py')
| -rw-r--r-- | lib/Server/__init__.py | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/lib/Server/__init__.py b/lib/Server/__init__.py index c3688c2..6e6d8a7 100644 --- a/lib/Server/__init__.py +++ b/lib/Server/__init__.py @@ -1,5 +1,5 @@ from flask import Flask -from flask import abort, redirect, url_for +from flask import abort, redirect, url_for, request, jsonify import sys, os sys.path.append("./lib") from Pb import * @@ -8,9 +8,9 @@ from Server.InvalidUsage import InvalidUsage class Server(object): def __init__(self): self.app = Flask(__name__) - @self.app.route('/im/pb/<pb_classname>', methods=['POST']) - def pb(): - self._response_post(pb_classname, request) + @self.app.route('/<pb_classname>', methods=['POST']) + def pb(pb_classname): + return self._response_post(pb_classname, request.form.to_dict()) @self.app.errorhandler(InvalidUsage) def handle_invalid_usage(error): @@ -21,29 +21,38 @@ class Server(object): self._classname_aliases = { 'generate' : 'PbGenerate', 'imgrid' : 'PbGrid', + 'imbreak' : 'PbBreak', + 'impattern' : 'PbPattern', + 'imgradient' : 'PbGradient', + 'landscape' : 'PbLandscape', } + def _find_class_by_name(self, pb_classname): pb_classname = self._classname_aliases.get(pb_classname, None) or pb_classname try: - filter(lambda c: c.__name__ == pb_classname, Pb.__subclasses__())[0] + return filter(lambda c: c.__name__ == pb_classname, Pb.__subclasses__())[0] except IndexError: raise InvalidUsage('No such api', status_code=410) - def _response_post(self, pb_classname, request): + def _response_post(self, pb_classname, request_form): pb_class = self._find_class_by_name(pb_classname) classnames = map(lambda c: c.__name__, Pb.__subclasses__()) try: - im = pb_class(**(dict(request.forms))) - im.create(); - return im.file_json(); + pb = pb_class(**request_form) + pb.create(); + pb.file_s3move() + pb.db_send(); + return pb.file_json(); + #FIXME handle BadParamsError and PbError separately except Exception as e: sys.stderr.write("%s failure" % pb_class.__name__) sys.stderr.write("params:\n") - for i in request.forms: - sys.stderr.write("{}:{}\n".format(i, request.forms[i])) + sys.stderr.write(str(e)) + for i in request_form.keys(): + sys.stderr.write("{}:{}\n".format(i, request_form[i])) raise; - return json.dumps({ 'error' : 'Request could not be processed' }) + return jsonify({ 'error' : 'Request could not be processed' }) def run(self): self.app.run() |
