diff options
| author | Pepper <pepper@scannerjammer.com> | 2015-09-27 14:04:12 -0400 |
|---|---|---|
| committer | Pepper <pepper@scannerjammer.com> | 2015-09-27 14:04:12 -0400 |
| commit | e5b9c91c038dcae5cdd222bdd2510cdb5a478988 (patch) | |
| tree | 21cadadc1c36059610fa8af6fb989a5f27dc121e /lib/server.py | |
| parent | 480896bd416d0dfef7716508c6a10144d0fa068e (diff) | |
added jsonp and remote address
Diffstat (limited to 'lib/server.py')
| -rw-r--r-- | lib/server.py | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/lib/server.py b/lib/server.py index e41062b..cfc7e98 100644 --- a/lib/server.py +++ b/lib/server.py @@ -11,6 +11,8 @@ from pb import * from param import BadParamError from config import SERVER_HOST, SERVER_PORT +#FIXME add remote_addr and this jsonp thing + class InvalidUsage(Exception): """error class for InvalidUsage""" status_code = 400 @@ -37,7 +39,15 @@ class Server(object): return "HELLO WORLD!" @self.app.route('/im/api/<pb_classname>', methods=['POST']) def pb(pb_classname): - return self._response_post(pb_classname, request.form.to_dict()) + if request.headers.getlist("X-Forwarded-For"): + ip = request.headers.getlist("X-Forwarded-For")[0] + else: + ip = request.remote_addr + return self._response_post( + pb_classname, + request.form.to_dict(), + remote_addr=remote_addr + ) @self.app.errorhandler(InvalidUsage) def handle_invalid_usage(error): @@ -61,15 +71,18 @@ class Server(object): except IndexError: raise InvalidUsage('No such api', status_code=410) - def _response_post(self, pb_classname, request_form): + def _response_post(self, pb_classname, request_form, remote_addr=None): pb_class = self._find_class_by_name(pb_classname) classnames = map(lambda c: c.__name__, Pb.__subclasses__()) try: pb = pb_class(**request_form) pb.create() pb.file_s3move() - pb.db_send() - return jsonify(pb.file_dict()) + pb.db_send(remote_addr=remote_addr) + json_data = jsonify(pb.file_dict()) + if pb.params.callback: #accounts for jsonp + return "%s(%s)" % (pb.params.callback, json_data) + return json_data except BadParamError: for i in request_form.keys(): |
