Merge pull request #75 from redbaron2k7/main
add network request tracking for fetch requests in devtools
This commit is contained in:
@@ -122,3 +122,20 @@ func get_request_stats() -> Dictionary:
|
|||||||
"pending": pending_requests,
|
"pending": pending_requests,
|
||||||
"total_size": total_size
|
"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)
|
||||||
@@ -27,12 +27,32 @@ func _ready():
|
|||||||
func init(network_request: NetworkRequest, parent_tab: NetworkTab):
|
func init(network_request: NetworkRequest, parent_tab: NetworkTab):
|
||||||
request = network_request
|
request = network_request
|
||||||
network_tab = parent_tab
|
network_tab = parent_tab
|
||||||
|
if is_node_ready():
|
||||||
update_display()
|
update_display()
|
||||||
|
else:
|
||||||
|
call_deferred("update_display")
|
||||||
|
|
||||||
func update_display():
|
func update_display():
|
||||||
if not request:
|
if not request:
|
||||||
return
|
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
|
# Update icon
|
||||||
icon.texture = request.get_icon_texture()
|
icon.texture = request.get_icon_texture()
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,8 @@ func _ready():
|
|||||||
update_status_bar()
|
update_status_bar()
|
||||||
|
|
||||||
NetworkManager.register_dev_tools_network_tab(self)
|
NetworkManager.register_dev_tools_network_tab(self)
|
||||||
|
for req in NetworkManager.get_all_requests():
|
||||||
|
add_network_request(req)
|
||||||
|
|
||||||
func add_network_request(request: NetworkRequest):
|
func add_network_request(request: NetworkRequest):
|
||||||
network_requests.append(request)
|
network_requests.append(request)
|
||||||
|
|||||||
@@ -45,17 +45,24 @@ static func _lua_fetch_handler(vm: LuauVM) -> int:
|
|||||||
|
|
||||||
# Set request options
|
# Set request options
|
||||||
var headers_array: PackedStringArray = []
|
var headers_array: PackedStringArray = []
|
||||||
|
var headers_dict = {}
|
||||||
var has_user_agent = false
|
var has_user_agent = false
|
||||||
for header_name in headers:
|
for header_name in headers:
|
||||||
if str(header_name).to_lower() == "user-agent":
|
if str(header_name).to_lower() == "user-agent":
|
||||||
has_user_agent = true
|
has_user_agent = true
|
||||||
headers_array.append(str(header_name) + ": " + str(headers[header_name]))
|
headers_array.append(str(header_name) + ": " + str(headers[header_name]))
|
||||||
|
headers_dict[str(header_name)] = str(headers[header_name])
|
||||||
|
|
||||||
if not has_user_agent:
|
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
|
# Create response object with actual data
|
||||||
vm.lua_newtable()
|
vm.lua_newtable()
|
||||||
|
|||||||
Reference in New Issue
Block a user