resource.py (1621B)
1 ''' 2 SRI Message Signature helper, generating responses that: 3 4 * Include or exclude an `Integrity-Digest` header depending on the request's 5 `digest` parameter. 6 * Include or exclude an `Signature` header depending on the request's 7 `signature` parameter. 8 * Include or exclude an `Signature-Input` header depending on the request's 9 `signatureInput` parameter. 10 11 * Include or exclude `Access-Control-Allow-Origin: *` depending on the 12 request's `cors` parameter. 13 14 * Sets a `Content-Type` header from the request's `type` parameter. 15 16 * Echos the `body` parameter into the response body. 17 ''' 18 def main(request, response): 19 digest = request.GET.first(b'digest', b'') 20 signature = request.GET.first(b'signature', b'') 21 signatureInput = request.GET.first(b'signatureInput', b'') 22 if digest: 23 response.headers.set(b'unencoded-digest', digest) 24 if signature: 25 response.headers.set(b'signature', signature) 26 if signatureInput: 27 response.headers.set(b'signature-input', signatureInput) 28 29 30 cors = request.GET.first(b'cors', '') 31 if cors: 32 response.headers.set(b'access-control-allow-origin', b'*') 33 34 response.headers.set(b'content-type', 35 request.GET.first(b'type', b'text/plain')) 36 37 # Reflect the `accept-signature` header from the request to the response. 38 acceptSigs = request.headers.get(b'accept-signature', b'') 39 response.headers.set(b'accept-signature', acceptSigs) 40 response.headers.set(b'access-control-expose-headers', b'accept-signature') 41 42 response.status = int(request.GET.first(b'status', "200")) 43 response.content = request.GET.first(b'body', '')