aboutsummaryrefslogtreecommitdiffstats
path: root/scanner/floatapp/jsonp.py
blob: cac8ad1fe9474341c2da449a65883708d9fb2ac4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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