From 02c03473f3a09b48efd6e05867a33674bc34ff29 Mon Sep 17 00:00:00 2001 From: Aidan <76609332+redbaron2k7@users.noreply.github.com> Date: Thu, 11 Sep 2025 10:15:33 -0500 Subject: [PATCH] add network request tracking for fetch requests in devtools --- flumi/Scripts/Browser/NetworkManager.gd | 17 ++++++++++++++++ flumi/Scripts/Browser/NetworkRequestItem.gd | 22 ++++++++++++++++++++- flumi/Scripts/Browser/NetworkTab.gd | 2 ++ flumi/Scripts/Utils/Lua/Network.gd | 13 +++++++++--- 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/flumi/Scripts/Browser/NetworkManager.gd b/flumi/Scripts/Browser/NetworkManager.gd index 8dad50f..bc970b0 100644 --- a/flumi/Scripts/Browser/NetworkManager.gd +++ b/flumi/Scripts/Browser/NetworkManager.gd @@ -122,3 +122,20 @@ func get_request_stats() -> Dictionary: "pending": pending_requests, "total_size": total_size } + +func add_completed_request(url: String, method: String, is_from_lua: bool, status_code: int, status_text: String, response_headers: Dictionary, response_body: String, body_bytes: PackedByteArray = [], request_headers: Dictionary = {}, request_body: String = "", time_ms: float = 0.0): + + var request = NetworkRequest.new(url, method) + request.is_from_lua = is_from_lua + request.request_headers = request_headers + request.request_body = request_body + + if time_ms > 0.0: + request.start_time = Time.get_ticks_msec() - time_ms + + request.set_response(status_code, status_text, response_headers, response_body, body_bytes) + + all_requests.append(request) + + if dev_tools_network_tab: + dev_tools_network_tab.add_network_request(request) \ No newline at end of file diff --git a/flumi/Scripts/Browser/NetworkRequestItem.gd b/flumi/Scripts/Browser/NetworkRequestItem.gd index 41e67e8..ddf70af 100644 --- a/flumi/Scripts/Browser/NetworkRequestItem.gd +++ b/flumi/Scripts/Browser/NetworkRequestItem.gd @@ -27,12 +27,32 @@ func _ready(): func init(network_request: NetworkRequest, parent_tab: NetworkTab): request = network_request network_tab = parent_tab - update_display() + if is_node_ready(): + update_display() + else: + call_deferred("update_display") func update_display(): if not request: return + if icon == null: + icon = get_node_or_null("HBoxContainer/IconContainer/Icon") as TextureRect + if name_label == null: + name_label = get_node_or_null("HBoxContainer/NameLabel") as Label + if status_label == null: + status_label = get_node_or_null("HBoxContainer/StatusLabel") as Label + if type_label == null: + type_label = get_node_or_null("HBoxContainer/TypeLabel") as Label + if size_label == null: + size_label = get_node_or_null("HBoxContainer/SizeLabel") as Label + if time_label == null: + time_label = get_node_or_null("HBoxContainer/TimeLabel") as Label + + if icon == null or name_label == null or status_label == null or type_label == null or size_label == null or time_label == null: + call_deferred("update_display") + return + # Update icon icon.texture = request.get_icon_texture() diff --git a/flumi/Scripts/Browser/NetworkTab.gd b/flumi/Scripts/Browser/NetworkTab.gd index 0c24ddd..bc15d84 100644 --- a/flumi/Scripts/Browser/NetworkTab.gd +++ b/flumi/Scripts/Browser/NetworkTab.gd @@ -46,6 +46,8 @@ func _ready(): update_status_bar() NetworkManager.register_dev_tools_network_tab(self) + for req in NetworkManager.get_all_requests(): + add_network_request(req) func add_network_request(request: NetworkRequest): network_requests.append(request) diff --git a/flumi/Scripts/Utils/Lua/Network.gd b/flumi/Scripts/Utils/Lua/Network.gd index 1e272d5..927ae1f 100644 --- a/flumi/Scripts/Utils/Lua/Network.gd +++ b/flumi/Scripts/Utils/Lua/Network.gd @@ -45,17 +45,24 @@ static func _lua_fetch_handler(vm: LuauVM) -> int: # Set request options var headers_array: PackedStringArray = [] - + var headers_dict = {} var has_user_agent = false for header_name in headers: if str(header_name).to_lower() == "user-agent": has_user_agent = true headers_array.append(str(header_name) + ": " + str(headers[header_name])) + headers_dict[str(header_name)] = str(headers[header_name]) if not has_user_agent: - headers_array.append("User-Agent: " + UserAgent.get_user_agent()) + var ua_value = UserAgent.get_user_agent() + headers_array.append("User-Agent: " + ua_value) + headers_dict["User-Agent"] = ua_value - var response_data = make_http_request(url, method, headers_array, body) + var start_ms = Time.get_ticks_msec() + var response_data = make_http_request(url, method, headers_array, str(body)) + var elapsed_ms = Time.get_ticks_msec() - start_ms + + NetworkManager.call_deferred("add_completed_request", url, method, true, int(response_data.status), str(response_data.status_text), response_data.headers, str(response_data.body), [], headers_dict, str(body), float(elapsed_ms)) # Create response object with actual data vm.lua_newtable()