Add option to toggle logging of request/response for http functions, this has been added to due storage capacity concerns

This commit is contained in:
Peter Stockings
2023-12-21 14:45:25 +11:00
parent 7c7dbae05a
commit 19cebc0f45
6 changed files with 78 additions and 19 deletions

23
app.py
View File

@@ -106,7 +106,7 @@ def dashboard_http_functions():
@ app.route("/dashboard/http_functions/add_form", methods=["GET"])
@login_required
def get_http_function_add_form():
return render_template("dashboard/http_functions/new.html", name=DEFAULT_FUNCTION_NAME, script=DEFAULT_SCRIPT, environment_info=DEFAULT_ENVIRONMENT, is_public=False)
return render_template("dashboard/http_functions/new.html", name=DEFAULT_FUNCTION_NAME, script=DEFAULT_SCRIPT, environment_info=DEFAULT_ENVIRONMENT, is_public=False, log_request=True, log_response=False)
@ app.route("/dashboard/http_functions/create", methods=["POST"])
@login_required
@@ -117,8 +117,10 @@ def create_http_function():
script_content = request.json.get('script_content')
environment_info = json.dumps(eval(request.json.get('environment_info')))
is_public = request.json.get('is_public')
log_request = request.json.get('log_request')
log_response = request.json.get('log_response')
db.create_new_http_function(user_id, name, script_content, environment_info, is_public)
db.create_new_http_function(user_id, name, script_content, environment_info, is_public, log_request, log_response)
http_functions = db.get_http_functions_for_user(user_id)
http_functions = create_http_functions_view_model(http_functions)
@@ -138,7 +140,9 @@ def get_http_function_edit_form():
script = http_function['script_content']
environment_info = json.dumps(http_function['environment_info'], indent=2)
is_public = http_function['is_public']
return render_template("dashboard/http_functions/edit.html", user_id=user_id, name=name, script=script, environment_info=environment_info, is_public=is_public)
log_request = http_function['log_request']
log_response = http_function['log_response']
return render_template("dashboard/http_functions/edit.html", user_id=user_id, name=name, script=script, environment_info=environment_info, is_public=is_public, log_request=log_request, log_response=log_response)
@ app.route("/dashboard/http_functions/edit", methods=["POST"])
@login_required
@@ -149,8 +153,10 @@ def edit_http_function():
script_content = request.json.get('script_content')
environment_info = json.dumps(eval(request.json.get('environment_info')))
is_public = request.json.get('is_public')
log_request = request.json.get('log_request')
log_response = request.json.get('log_response')
db.edit_http_function(user_id, name, script_content, environment_info, is_public)
db.edit_http_function(user_id, name, script_content, environment_info, is_public, log_request, log_response)
return { "status": "success", "message": f'{name} updated' }
except Exception as e:
print(e)
@@ -231,6 +237,8 @@ def execute_http_function(user_id, function):
code = http_function['script_content']
environment = http_function['environment_info']
is_public = http_function['is_public']
log_request = http_function['log_request']
log_response = http_function['log_response']
# Check if the function is public, if not check if the user is authenticated and owns the function
if not is_public:
@@ -268,7 +276,12 @@ def execute_http_function(user_id, function):
response_data = response.json()
db.update_http_function_environment_info_and_invoked_count(user_id, function, response_data['environment'])
db.add_http_function_invocation(http_function['id'], response_data['status'], request_data, response_data['result'], response_data['logs'])
db.add_http_function_invocation(
http_function['id'],
response_data['status'],
request_data if log_request else {},
response_data['result'] if log_response else {},
response_data['logs'])
# Map the Node.js response to Flask response
flask_response = map_isolator_response_to_flask_response(response_data)