| import json |
| |
| def main(request, response): |
| '''Handler for getting an HTTP response customised by the given query |
| parameters. |
| |
| The returned response will have |
| - HTTP headers defined by the 'headers' query parameter |
| - Must be a serialized JSON dictionary mapping header names to header |
| values |
| - HTTP status code defined by the 'status' query parameter |
| - Must be a positive serialized JSON integer like the string '200' |
| - Response content defined by the 'content' query parameter |
| - Must be a serialized JSON string representing the desired response body |
| ''' |
| def query_parameter_or_default(param, default): |
| return request.GET.first(param) if param in request.GET else default |
| |
| headers = json.loads(query_parameter_or_default(b'headers', b'"{}"')) |
| for k, v in headers.items(): |
| response.headers.set(k, v) |
| |
| # Note that, in order to have out-of-the-box support for tests that don't call |
| # setup({'allow_uncaught_exception': true}) |
| # we return a no-op JS payload. This approach will avoid syntax errors in |
| # script resources that would otherwise cause the test harness to fail. |
| response.content = json.loads(query_parameter_or_default(b'content', |
| b'"/* CustomCorsResponse.py content */"')) |
| response.status_code = json.loads(query_parameter_or_default(b'status', |
| b'200')) |