Record request, response, status, & logs for http function invocations

This commit is contained in:
Peter Stockings
2023-12-18 19:19:38 +11:00
parent 8ad1b6bb85
commit ca9bf33edf
2 changed files with 13 additions and 6 deletions

14
app.py
View File

@@ -183,7 +183,7 @@ def execute_http_function(function):
code = http_function['script_content']
environment = http_function['environment_info']
request_obj = {
request_data = {
'method': request.method,
'headers': dict(request.headers),
'url': request.url,
@@ -192,26 +192,28 @@ def execute_http_function(function):
# Add JSON data if it exists
if request.is_json:
request_obj['json'] = request.get_json()
request_data['json'] = request.get_json()
# Add form data if it exists
if request.form:
request_obj['form'] = request.form.to_dict()
request_data['form'] = request.form.to_dict()
# Add query parameters if they exist
if request.args:
request_obj['query'] = request.args.to_dict()
request_data['query'] = request.args.to_dict()
# Add plain text data if it exists
if request.data and not request.is_json:
request_obj['text'] = request.data.decode('utf-8')
request_data['text'] = request.data.decode('utf-8')
# Call the Node.js API
response = requests.post(API_URL, json={'code': code, 'request': request_obj, 'environment': environment})
response = requests.post(API_URL, json={'code': code, 'request': request_data, 'environment': environment})
response_data = response.json()
db.update_http_function_environment_info_and_invoked_count(function, json.dumps(response_data['environment']))
db.add_http_function_invocation(http_function['id'], response_data['status'], request_data, response_data['result'], response_data['logs'])
# Map the Node.js response to Flask response
flask_response = map_isolator_response_to_flask_response(response_data)
return flask_response