summaryrefslogtreecommitdiffstats
path: root/pyload/web/api_app.py
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2013-09-13 16:23:54 +0200
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2013-09-13 16:23:54 +0200
commit5854aca376058c4b98ee205ee44ac956ebe50e23 (patch)
tree9cf89cb8457c390f7fdf8140dff6910bfdfabeda /pyload/web/api_app.py
parentgzip files on build, disabled gzip middleware (diff)
downloadpyload-5854aca376058c4b98ee205ee44ac956ebe50e23.tar.xz
some fixes for py 2.5
Diffstat (limited to 'pyload/web/api_app.py')
-rw-r--r--pyload/web/api_app.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/pyload/web/api_app.py b/pyload/web/api_app.py
index 66cdd58fd..af5c3074c 100644
--- a/pyload/web/api_app.py
+++ b/pyload/web/api_app.py
@@ -20,6 +20,10 @@ def add_header(r):
r.headers.append("Access-Control-Allow-Origin", request.get_header('Origin', '*'))
r.headers.append("Access-Control-Allow-Credentials", "true")
+# returns http error
+def error(code, msg):
+ return HTTPError(code, dumps(msg), **dict(response.headers))
+
# accepting positional arguments, as well as kwargs via post and get
# only forbidden path symbol are "?", which is used to separate GET data and #
@route("/api/<func><args:re:[^#?]*>")
@@ -67,8 +71,15 @@ def call_api(func, args=""):
# convert arguments from json to obj separately
for x, y in request.params.iteritems():
- if not x or not y or x == "session": continue
- kwargs[x] = loads(unquote(y))
+ try:
+ if not x or not y or x == "session": continue
+ kwargs[x] = loads(unquote(y))
+ except Exception, e:
+ # Unsupported input
+ msg = "Invalid Input %s, %s : %s" % (x, y, e.message)
+ print_exc()
+ print msg
+ return error(415, msg)
try:
result = getattr(api, func)(*args, **kwargs)
@@ -77,10 +88,10 @@ def call_api(func, args=""):
return dumps(result)
except ExceptionObject, e:
- return HTTPError(400, dumps(e), **response.headers)
+ return error(400, e.message)
except Exception, e:
print_exc()
- return HTTPError(500, dumps({"error": e.message, "traceback": format_exc()}), **response.headers)
+ return error(500, {"error": e.message, "traceback": format_exc()})
@route("/api/login")