aboutsummaryrefslogtreecommitdiffstats
path: root/scanner/floatapp/jsonp.py
diff options
context:
space:
mode:
Diffstat (limited to 'scanner/floatapp/jsonp.py')
-rw-r--r--scanner/floatapp/jsonp.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/scanner/floatapp/jsonp.py b/scanner/floatapp/jsonp.py
new file mode 100644
index 0000000..cac8ad1
--- /dev/null
+++ b/scanner/floatapp/jsonp.py
@@ -0,0 +1,18 @@
+import json
+from functools import wraps
+from flask import redirect, request, current_app
+import re
+
+jsonp_validator = re.compile("^[a-zA-Z0-9_\-.]{1,128}$")
+
+def jsonp(f):
+ """Wraps JSONified output for JSONP"""
+ @wraps(f)
+ def decorated_function(*args, **kwargs):
+ callback = request.args.get('callback', False)
+ if callback and jsonp_validator.match(callback):
+ content = str(callback) + '(' + str(f(*args,**kwargs).data) + ')'
+ return current_app.response_class(content, mimetype='application/javascript')
+ else:
+ return f(*args, **kwargs)
+ return decorated_function