flexible_tokens.py (1499B)
1 import importlib 2 import json 3 error_checker = importlib.import_module("fedcm.support.request-params-check") 4 5 # Pre-computed token responses 6 TOKEN_RESPONSES = { 7 'string': '{"token": "simple_string_token"}', 8 'positive-number': '{"token": 12345}', 9 'negative-number': '{"token": -42}', 10 'boolean-true': '{"token": true}', 11 'boolean-false': '{"token": false}', 12 'null': '{"token": null}', 13 'zero': '{"token": 0}', 14 'float': '{"token": 3.14159}', 15 'array': '{"token": ["token1", "token2", "token3"]}', 16 'empty-array': '{"token": []}', 17 'mixed-array': '{"token": ["string", 123, true, null, {"key": "value"}]}', 18 'object': '{"token": {"access_token": "abc123", "token_type": "Bearer", "expires_in": 3600}}', 19 'empty-object': '{"token": {}}', 20 'nested-object': '{"token": {"user": {"id": "123", "profile": {"name": "Test User", "preferences": {"theme": "dark"}}}}}', 21 } 22 23 def main(request, response): 24 request_error = error_checker.tokenCheck(request) 25 if request_error: 26 return request_error 27 28 response.headers.set(b"Content-Type", b"application/json") 29 response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"Origin")) 30 response.headers.set(b"Access-Control-Allow-Credentials", "true") 31 32 token_type = 'string' # default 33 34 param_string = request.POST.get(b"params").decode("utf-8") 35 param_obj = json.loads(param_string) 36 if 'token_type' in param_obj: 37 token_type = param_obj['token_type'] 38 39 return TOKEN_RESPONSES.get(token_type, TOKEN_RESPONSES['string'])