Multiple server threads are now used, allowing simultaneous fetching of form data and loading of bug markers, etc.
This commit is contained in:
parent
0fbb9a0fbe
commit
fba901b368
@ -12,21 +12,25 @@ const UNRESOLVED_TAG : StringName = &"UNRESOLVED"
|
|||||||
const IN_PROGRESS_TAG : StringName = &"IN_PROGRESS"
|
const IN_PROGRESS_TAG : StringName = &"IN_PROGRESS"
|
||||||
const RESOLVED_TAG : StringName = &"RESOLVED"
|
const RESOLVED_TAG : StringName = &"RESOLVED"
|
||||||
|
|
||||||
var __bugbot_server_thread : Thread
|
var __bugbot_return_list_of_bugs_thread : Thread
|
||||||
|
var __bugbot_prepare_form_thread : Thread
|
||||||
|
var __bugbot_send_form_data_thread : Thread
|
||||||
|
|
||||||
|
|
||||||
func _init():
|
func _init():
|
||||||
__bugbot_server_thread = Thread.new()
|
__bugbot_return_list_of_bugs_thread = Thread.new()
|
||||||
|
__bugbot_prepare_form_thread = Thread.new()
|
||||||
|
__bugbot_send_form_data_thread = Thread.new()
|
||||||
|
|
||||||
|
|
||||||
func _return_list_of_bugs(map_name:String, callback:Callable) -> int:
|
func _return_list_of_bugs(map_name:String, callback:Callable) -> int:
|
||||||
return __start_thread_with_callback(__return_list_of_bugs_thread.bind(map_name, callback))
|
return __start_thread_with_callback(__bugbot_return_list_of_bugs_thread, __return_list_of_bugs_thread.bind(__bugbot_return_list_of_bugs_thread, map_name, callback))
|
||||||
|
|
||||||
func _prepare_form(callback:Callable) -> int:
|
func _prepare_form(callback:Callable) -> int:
|
||||||
return __start_thread_with_callback(__prepare_form_thread.bind(callback))
|
return __start_thread_with_callback(__bugbot_prepare_form_thread, __prepare_form_thread.bind(__bugbot_prepare_form_thread, callback))
|
||||||
|
|
||||||
func _send_form_data(data:Dictionary, map_name:String, bug_position:Vector3, bug_normal:Vector3, callback:Callable) -> int:
|
func _send_form_data(data:Dictionary, map_name:String, bug_position:Vector3, bug_normal:Vector3, callback:Callable) -> int:
|
||||||
return __start_thread_with_callback(__send_form_data_thread.bind(data, map_name, bug_position, bug_normal, callback))
|
return __start_thread_with_callback(__bugbot_send_form_data_thread, __send_form_data_thread.bind(__bugbot_send_form_data_thread, data, map_name, bug_position, bug_normal, callback))
|
||||||
|
|
||||||
|
|
||||||
static func _create_new_server_api() -> BugbotServerAPI:
|
static func _create_new_server_api() -> BugbotServerAPI:
|
||||||
@ -58,18 +62,17 @@ func __get_http_client_chunk_response(http_client:HTTPClient) -> String:
|
|||||||
return response_body.get_string_from_utf8()
|
return response_body.get_string_from_utf8()
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
func __start_thread_with_callback(thread_function:Callable) -> int:
|
func __start_thread_with_callback(thread:Thread, thread_function:Callable) -> int:
|
||||||
if not __bugbot_server_thread:
|
if not thread:
|
||||||
printerr("Server thread is null.")
|
printerr("Server thread is null.")
|
||||||
return BugbotServerError.THREAD_NULL
|
return BugbotServerError.THREAD_NULL
|
||||||
if __bugbot_server_thread.is_started():
|
if thread.is_started():
|
||||||
printerr("Server thread is currently busy.")
|
printerr("Server thread is currently busy.")
|
||||||
return BugbotServerError.THREAD_BUSY;
|
return BugbotServerError.THREAD_BUSY;
|
||||||
__bugbot_server_thread = Thread.new()
|
thread.start(thread_function)
|
||||||
__bugbot_server_thread.start(thread_function)
|
|
||||||
return BugbotServerError.OK
|
return BugbotServerError.OK
|
||||||
|
|
||||||
func __validate_server_response(_response:Variant) -> int:
|
func __validate_server_response(_thread:Thread, _response:Variant) -> int:
|
||||||
return Error.OK
|
return Error.OK
|
||||||
|
|
||||||
|
|
||||||
@ -89,17 +92,17 @@ func __create_header_data(content_length:int = -1) -> Array:
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
|
func __return_list_of_bugs_thread(thread:Thread, map_name:String, callback:Callable) -> void:
|
||||||
print("Insert list of ", _current_server_api(), " bugs here.")
|
print("Insert list of ", _current_server_api(), " bugs here.")
|
||||||
callback.call_deferred([])
|
callback.call_deferred([])
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|
||||||
func __prepare_form_thread(callback:Callable) -> void:
|
func __prepare_form_thread(thread:Thread, callback:Callable) -> void:
|
||||||
print("Prepare ", _current_server_api(), " form here.")
|
print("Prepare ", _current_server_api(), " form here.")
|
||||||
callback.call_deferred([])
|
callback.call_deferred([])
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|
||||||
func __send_form_data_thread(data:Dictionary, map_name:String, bug_position:Vector3, bug_normal:Vector3, callback:Callable) -> void:
|
func __send_form_data_thread(thread:Thread, data:Dictionary, map_name:String, bug_position:Vector3, bug_normal:Vector3, callback:Callable) -> void:
|
||||||
print("Send ", _current_server_api(), " form data here.")
|
print("Send ", _current_server_api(), " form data here.")
|
||||||
callback.call_deferred([])
|
callback.call_deferred([])
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|||||||
@ -17,7 +17,7 @@ const DEFAULT_RESOLVED_STATUSES : Array = [&"RESOLVED", &"VERIFIED"]
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
|
func __return_list_of_bugs_thread(thread:Thread, map_name:String, callback:Callable) -> void:
|
||||||
var http_client : HTTPClient = HTTPClient.new()
|
var http_client : HTTPClient = HTTPClient.new()
|
||||||
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/bugzilla/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/bugzilla/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
||||||
printerr("Could not connect to server.")
|
printerr("Could not connect to server.")
|
||||||
@ -54,7 +54,7 @@ func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
|
|||||||
var response_string : String = __get_http_client_chunk_response(http_client)
|
var response_string : String = __get_http_client_chunk_response(http_client)
|
||||||
|
|
||||||
var response_data := JSON.parse_string(response_string)
|
var response_data := JSON.parse_string(response_string)
|
||||||
if __validate_server_response(response_data) != Error.OK:
|
if __validate_server_response(thread, response_data) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
var bug_array : Array = []
|
var bug_array : Array = []
|
||||||
@ -76,9 +76,9 @@ func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
|
|||||||
bug_array.append(bug)
|
bug_array.append(bug)
|
||||||
|
|
||||||
callback.call_deferred(bug_array)
|
callback.call_deferred(bug_array)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|
||||||
func __prepare_form_thread(callback:Callable) -> void:
|
func __prepare_form_thread(thread:Thread, callback:Callable) -> void:
|
||||||
var http_client : HTTPClient = HTTPClient.new()
|
var http_client : HTTPClient = HTTPClient.new()
|
||||||
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/bugzilla/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/bugzilla/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
||||||
printerr("Could not connect to server.")
|
printerr("Could not connect to server.")
|
||||||
@ -97,7 +97,7 @@ func __prepare_form_thread(callback:Callable) -> void:
|
|||||||
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
||||||
var product_response_string : String = __get_http_client_chunk_response(http_client)
|
var product_response_string : String = __get_http_client_chunk_response(http_client)
|
||||||
var product_response : Dictionary = JSON.parse_string(product_response_string)
|
var product_response : Dictionary = JSON.parse_string(product_response_string)
|
||||||
if __validate_server_response(product_response) != Error.OK:
|
if __validate_server_response(thread, product_response) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
api_url = "field/bug?"
|
api_url = "field/bug?"
|
||||||
@ -109,7 +109,7 @@ func __prepare_form_thread(callback:Callable) -> void:
|
|||||||
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
||||||
var fields_response_string : String = __get_http_client_chunk_response(http_client)
|
var fields_response_string : String = __get_http_client_chunk_response(http_client)
|
||||||
var fields_response : Dictionary = JSON.parse_string(fields_response_string)
|
var fields_response : Dictionary = JSON.parse_string(fields_response_string)
|
||||||
if __validate_server_response(fields_response) != Error.OK:
|
if __validate_server_response(thread, fields_response) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
var tag_lists : Array
|
var tag_lists : Array
|
||||||
@ -123,7 +123,7 @@ func __prepare_form_thread(callback:Callable) -> void:
|
|||||||
var product_info : Dictionary = product_response["products"][0]
|
var product_info : Dictionary = product_response["products"][0]
|
||||||
if product_info["name"] != product_name:
|
if product_info["name"] != product_name:
|
||||||
printerr("Incorrect product found.")
|
printerr("Incorrect product found.")
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
return
|
return
|
||||||
|
|
||||||
for component:Dictionary in product_info["components"]:
|
for component:Dictionary in product_info["components"]:
|
||||||
@ -146,9 +146,9 @@ func __prepare_form_thread(callback:Callable) -> void:
|
|||||||
tag_lists[BugbotTagArray.OS].append({ "name": os["name"], "id": os["sort_key"] })
|
tag_lists[BugbotTagArray.OS].append({ "name": os["name"], "id": os["sort_key"] })
|
||||||
|
|
||||||
callback.call_deferred(tag_lists)
|
callback.call_deferred(tag_lists)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|
||||||
func __send_form_data_thread(data:Dictionary, map_name:String, bug_position:Vector3, bug_normal:Vector3, callback:Callable) -> void:
|
func __send_form_data_thread(thread:Thread, data:Dictionary, map_name:String, bug_position:Vector3, bug_normal:Vector3, callback:Callable) -> void:
|
||||||
var http_client : HTTPClient = HTTPClient.new()
|
var http_client : HTTPClient = HTTPClient.new()
|
||||||
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/bugzilla/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/bugzilla/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
||||||
printerr("Could not connect to server.")
|
printerr("Could not connect to server.")
|
||||||
@ -188,7 +188,7 @@ func __send_form_data_thread(data:Dictionary, map_name:String, bug_position:Vect
|
|||||||
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
||||||
var post_response_string : String = __get_http_client_chunk_response(http_client)
|
var post_response_string : String = __get_http_client_chunk_response(http_client)
|
||||||
var post_response : Dictionary = JSON.parse_string(post_response_string)
|
var post_response : Dictionary = JSON.parse_string(post_response_string)
|
||||||
if __validate_server_response(post_response) != Error.OK:
|
if __validate_server_response(thread, post_response) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
post_data["id"] = post_response["id"]
|
post_data["id"] = post_response["id"]
|
||||||
@ -209,7 +209,7 @@ func __send_form_data_thread(data:Dictionary, map_name:String, bug_position:Vect
|
|||||||
var bug_data : BugbotBugData = __create_bug_data_from_server_response(post_data, map_name, label_dict, false)
|
var bug_data : BugbotBugData = __create_bug_data_from_server_response(post_data, map_name, label_dict, false)
|
||||||
|
|
||||||
callback.call_deferred(bug_data)
|
callback.call_deferred(bug_data)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|
||||||
|
|
||||||
func _current_server_api() -> String:
|
func _current_server_api() -> String:
|
||||||
@ -238,14 +238,14 @@ func __create_header_data(content_length:int = -1) -> Array:
|
|||||||
header.append("Content-Length: " + String.num_uint64(content_length))
|
header.append("Content-Length: " + String.num_uint64(content_length))
|
||||||
return header
|
return header
|
||||||
|
|
||||||
func __validate_server_response(_response:Variant) -> int:
|
func __validate_server_response(_thread:Thread, _response:Variant) -> int:
|
||||||
# If the response has a message field, make the assumption that this is
|
# If the response has a message field, make the assumption that this is
|
||||||
# because the response was an error code.
|
# because the response was an error code.
|
||||||
if (_response.has("error") and _response["error"] == true) or _response.has("message"):
|
if (_response.has("error") and _response["error"] == true) or _response.has("message"):
|
||||||
var error_data : BugbotErrorData = BugbotErrorData.new()
|
var error_data : BugbotErrorData = BugbotErrorData.new()
|
||||||
error_data.message = _response["message"]
|
error_data.message = _response["message"]
|
||||||
printerr(error_data.message)
|
printerr(error_data.message)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
_thread.call_deferred("wait_to_finish")
|
||||||
return Error.FAILED
|
return Error.FAILED
|
||||||
return Error.OK
|
return Error.OK
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@ const DEFAULT_RESOLVED_STATUSES : Array = []
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
|
func __return_list_of_bugs_thread(thread:Thread, map_name:String, callback:Callable) -> void:
|
||||||
var http_client : HTTPClient = HTTPClient.new()
|
var http_client : HTTPClient = HTTPClient.new()
|
||||||
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/gitea/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/gitea/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
||||||
printerr("Could not connect to server.")
|
printerr("Could not connect to server.")
|
||||||
@ -39,7 +39,7 @@ func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
|
|||||||
var response_string : String = __get_http_client_chunk_response(http_client)
|
var response_string : String = __get_http_client_chunk_response(http_client)
|
||||||
|
|
||||||
var response_data := JSON.parse_string(response_string)
|
var response_data := JSON.parse_string(response_string)
|
||||||
if __validate_server_response(response_data) != Error.OK:
|
if __validate_server_response(thread, response_data) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
var bug_array : Array
|
var bug_array : Array
|
||||||
@ -59,9 +59,9 @@ func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
|
|||||||
bug_array.append(bug)
|
bug_array.append(bug)
|
||||||
|
|
||||||
callback.call_deferred(bug_array)
|
callback.call_deferred(bug_array)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|
||||||
func __prepare_form_thread(callback:Callable) -> void:
|
func __prepare_form_thread(thread:Thread, callback:Callable) -> void:
|
||||||
var http_client : HTTPClient = HTTPClient.new()
|
var http_client : HTTPClient = HTTPClient.new()
|
||||||
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/gitea/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/gitea/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
||||||
printerr("Could not connect to server.")
|
printerr("Could not connect to server.")
|
||||||
@ -78,7 +78,7 @@ func __prepare_form_thread(callback:Callable) -> void:
|
|||||||
var response_string : String = __get_http_client_chunk_response(http_client)
|
var response_string : String = __get_http_client_chunk_response(http_client)
|
||||||
|
|
||||||
var response_data : Variant = JSON.parse_string(response_string)
|
var response_data : Variant = JSON.parse_string(response_string)
|
||||||
if __validate_server_response(response_data) != Error.OK:
|
if __validate_server_response(thread, response_data) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
var tag_lists : Array
|
var tag_lists : Array
|
||||||
@ -113,9 +113,9 @@ func __prepare_form_thread(callback:Callable) -> void:
|
|||||||
tag_lists[BugbotTagArray.SEVERITY].append(label_in)
|
tag_lists[BugbotTagArray.SEVERITY].append(label_in)
|
||||||
|
|
||||||
callback.call_deferred(tag_lists)
|
callback.call_deferred(tag_lists)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|
||||||
func __send_form_data_thread(data:Dictionary, map_name:String, bug_position:Vector3, bug_normal:Vector3, callback:Callable) -> void:
|
func __send_form_data_thread(thread:Thread, data:Dictionary, map_name:String, bug_position:Vector3, bug_normal:Vector3, callback:Callable) -> void:
|
||||||
var http_client : HTTPClient = HTTPClient.new()
|
var http_client : HTTPClient = HTTPClient.new()
|
||||||
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/gitea/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/gitea/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
||||||
printerr("Could not connect to server.")
|
printerr("Could not connect to server.")
|
||||||
@ -130,7 +130,7 @@ func __send_form_data_thread(data:Dictionary, map_name:String, bug_position:Vect
|
|||||||
http_client.poll()
|
http_client.poll()
|
||||||
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
||||||
var response_data : Variant = JSON.parse_string(__get_http_client_chunk_response(http_client))
|
var response_data : Variant = JSON.parse_string(__get_http_client_chunk_response(http_client))
|
||||||
if __validate_server_response(response_data) != Error.OK:
|
if __validate_server_response(thread, response_data) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Collect the label IDs for each label we want to apply to this issue
|
# Collect the label IDs for each label we want to apply to this issue
|
||||||
@ -171,7 +171,7 @@ func __send_form_data_thread(data:Dictionary, map_name:String, bug_position:Vect
|
|||||||
http_client.poll()
|
http_client.poll()
|
||||||
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
||||||
var post_response_data : Variant = JSON.parse_string(__get_http_client_chunk_response(http_client))
|
var post_response_data : Variant = JSON.parse_string(__get_http_client_chunk_response(http_client))
|
||||||
if __validate_server_response(post_response_data) != Error.OK:
|
if __validate_server_response(thread, post_response_data) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
var label_dict : Dictionary = {
|
var label_dict : Dictionary = {
|
||||||
@ -187,7 +187,7 @@ func __send_form_data_thread(data:Dictionary, map_name:String, bug_position:Vect
|
|||||||
var bug_data : BugbotBugData = __create_bug_data_from_server_response(post_response_data, map_name, label_dict, false, assigned_as_in_progress)
|
var bug_data : BugbotBugData = __create_bug_data_from_server_response(post_response_data, map_name, label_dict, false, assigned_as_in_progress)
|
||||||
|
|
||||||
callback.call_deferred(bug_data)
|
callback.call_deferred(bug_data)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|
||||||
|
|
||||||
func _current_server_api() -> String:
|
func _current_server_api() -> String:
|
||||||
@ -222,7 +222,7 @@ func __create_header_data(content_length:int = -1) -> Array:
|
|||||||
header.append("Content-Length: " + String.num_uint64(content_length))
|
header.append("Content-Length: " + String.num_uint64(content_length))
|
||||||
return header
|
return header
|
||||||
|
|
||||||
func __validate_server_response(_response:Variant) -> int:
|
func __validate_server_response(_thread:Thread, _response:Variant) -> int:
|
||||||
# If the response has a message field, make the assumption that this is
|
# If the response has a message field, make the assumption that this is
|
||||||
# because the response was an error code.
|
# because the response was an error code.
|
||||||
if _response.has("message"):
|
if _response.has("message"):
|
||||||
@ -231,7 +231,7 @@ func __validate_server_response(_response:Variant) -> int:
|
|||||||
error_data.message = _response["message"]
|
error_data.message = _response["message"]
|
||||||
error_data.url = _response["url"]
|
error_data.url = _response["url"]
|
||||||
printerr(error_data.message)
|
printerr(error_data.message)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
_thread.call_deferred("wait_to_finish")
|
||||||
return Error.FAILED
|
return Error.FAILED
|
||||||
return Error.OK
|
return Error.OK
|
||||||
|
|
||||||
|
|||||||
@ -25,16 +25,16 @@ const DEFAULT_RESOLVED_STATUSES : Array = [&"Done"]
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
|
func __return_list_of_bugs_thread(thread:Thread, map_name:String, callback:Callable) -> void:
|
||||||
var http_client : HTTPClient = HTTPClient.new()
|
var http_client : HTTPClient = HTTPClient.new()
|
||||||
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/jira/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/jira/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
||||||
printerr("Could not connect to server.")
|
printerr("Could not connect to server.")
|
||||||
return
|
return
|
||||||
|
|
||||||
var header_data : Array = __create_header_data()
|
var header_data : Array = __create_header_data()
|
||||||
var server_data : BugbotJiraServerData = __get_server_data(http_client, header_data)
|
var server_data : BugbotJiraServerData = __get_server_data(thread, http_client, header_data)
|
||||||
if not server_data:
|
if not server_data:
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
return
|
return
|
||||||
|
|
||||||
var map_name_field : String = ProjectSettings.get_setting("bugbot/reporting/jira/map_name_field", DEFAULT_MAP_NAME_FIELD)
|
var map_name_field : String = ProjectSettings.get_setting("bugbot/reporting/jira/map_name_field", DEFAULT_MAP_NAME_FIELD)
|
||||||
@ -89,7 +89,7 @@ func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
|
|||||||
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
||||||
var issue_response_string : String = __get_http_client_chunk_response(http_client)
|
var issue_response_string : String = __get_http_client_chunk_response(http_client)
|
||||||
var issue_response : Dictionary = JSON.parse_string(issue_response_string)
|
var issue_response : Dictionary = JSON.parse_string(issue_response_string)
|
||||||
if __validate_server_response(issue_response) != Error.OK:
|
if __validate_server_response(thread, issue_response) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
var bug_array : Array
|
var bug_array : Array
|
||||||
@ -109,18 +109,18 @@ func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
|
|||||||
if bug: bug_array.append(bug)
|
if bug: bug_array.append(bug)
|
||||||
|
|
||||||
callback.call_deferred(bug_array)
|
callback.call_deferred(bug_array)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|
||||||
func __prepare_form_thread(callback:Callable) -> void:
|
func __prepare_form_thread(thread:Thread, callback:Callable) -> void:
|
||||||
var http_client : HTTPClient = HTTPClient.new()
|
var http_client : HTTPClient = HTTPClient.new()
|
||||||
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/jira/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/jira/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
||||||
printerr("Could not connect to server.")
|
printerr("Could not connect to server.")
|
||||||
return
|
return
|
||||||
|
|
||||||
var header_data : Array = __create_header_data()
|
var header_data : Array = __create_header_data()
|
||||||
var server_data : BugbotJiraServerData = __get_server_data(http_client, header_data)
|
var server_data : BugbotJiraServerData = __get_server_data(thread, http_client, header_data)
|
||||||
if not server_data:
|
if not server_data:
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
return
|
return
|
||||||
|
|
||||||
var tag_lists : Array
|
var tag_lists : Array
|
||||||
@ -165,18 +165,18 @@ func __prepare_form_thread(callback:Callable) -> void:
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
callback.call_deferred(tag_lists)
|
callback.call_deferred(tag_lists)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|
||||||
func __send_form_data_thread(data:Dictionary, map_name:String, bug_position:Vector3, bug_normal:Vector3, callback:Callable) -> void:
|
func __send_form_data_thread(thread:Thread, data:Dictionary, map_name:String, bug_position:Vector3, bug_normal:Vector3, callback:Callable) -> void:
|
||||||
var http_client : HTTPClient = HTTPClient.new()
|
var http_client : HTTPClient = HTTPClient.new()
|
||||||
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/jira/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
if __connect_to_server(http_client, ProjectSettings.get_setting("bugbot/reporting/jira/server", DEFAULT_SERVER)) != HTTPClient.STATUS_CONNECTED:
|
||||||
printerr("Could not connect to server.")
|
printerr("Could not connect to server.")
|
||||||
return
|
return
|
||||||
|
|
||||||
var header_data : Array = __create_header_data()
|
var header_data : Array = __create_header_data()
|
||||||
var server_data : BugbotJiraServerData = __get_server_data(http_client, header_data)
|
var server_data : BugbotJiraServerData = __get_server_data(thread, http_client, header_data)
|
||||||
if not server_data:
|
if not server_data:
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
return
|
return
|
||||||
|
|
||||||
var bug_issue_type : String = ProjectSettings.get_setting("bugbot/reporting/jira/bug_issue_type", DEFAULT_BUG_ISSUE_TYPE)
|
var bug_issue_type : String = ProjectSettings.get_setting("bugbot/reporting/jira/bug_issue_type", DEFAULT_BUG_ISSUE_TYPE)
|
||||||
@ -212,7 +212,7 @@ func __send_form_data_thread(data:Dictionary, map_name:String, bug_position:Vect
|
|||||||
http_client.poll()
|
http_client.poll()
|
||||||
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
||||||
var post_response_data : Variant = JSON.parse_string(__get_http_client_chunk_response(http_client))
|
var post_response_data : Variant = JSON.parse_string(__get_http_client_chunk_response(http_client))
|
||||||
if __validate_server_response(post_response_data) != Error.OK:
|
if __validate_server_response(thread, post_response_data) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
var bug_data : BugbotBugData = BugbotBugData.new()
|
var bug_data : BugbotBugData = BugbotBugData.new()
|
||||||
@ -227,7 +227,7 @@ func __send_form_data_thread(data:Dictionary, map_name:String, bug_position:Vect
|
|||||||
bug_data.resolution = BugbotServerAPI.UNRESOLVED_TAG
|
bug_data.resolution = BugbotServerAPI.UNRESOLVED_TAG
|
||||||
|
|
||||||
callback.call_deferred(bug_data)
|
callback.call_deferred(bug_data)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
thread.call_deferred("wait_to_finish")
|
||||||
|
|
||||||
|
|
||||||
func _current_server_api() -> String:
|
func _current_server_api() -> String:
|
||||||
@ -261,7 +261,7 @@ func __generate_auth_string() -> String:
|
|||||||
var api_key : String = ProjectSettings.get_setting("bugbot/reporting/jira/API_key", DEFAULT_API_KEY)
|
var api_key : String = ProjectSettings.get_setting("bugbot/reporting/jira/API_key", DEFAULT_API_KEY)
|
||||||
return Marshalls.utf8_to_base64(email.to_lower() + ":" + api_key)
|
return Marshalls.utf8_to_base64(email.to_lower() + ":" + api_key)
|
||||||
|
|
||||||
func __validate_server_response(_response:Variant) -> int:
|
func __validate_server_response(_thread:Thread, _response:Variant) -> int:
|
||||||
# If the response has an errorMessages field, make the assumption that this
|
# If the response has an errorMessages field, make the assumption that this
|
||||||
# is because the response was an error code.
|
# is because the response was an error code.
|
||||||
if _response.has("errors"):
|
if _response.has("errors"):
|
||||||
@ -274,7 +274,7 @@ func __validate_server_response(_response:Variant) -> int:
|
|||||||
error_data.code = 1
|
error_data.code = 1
|
||||||
error_data.message = message
|
error_data.message = message
|
||||||
printerr(error_data.message)
|
printerr(error_data.message)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
_thread.call_deferred("wait_to_finish")
|
||||||
return Error.FAILED
|
return Error.FAILED
|
||||||
if _response.has("errorMessages"):
|
if _response.has("errorMessages"):
|
||||||
for message:String in _response["errorMessages"]:
|
for message:String in _response["errorMessages"]:
|
||||||
@ -282,7 +282,7 @@ func __validate_server_response(_response:Variant) -> int:
|
|||||||
error_data.code = 1
|
error_data.code = 1
|
||||||
error_data.message = message
|
error_data.message = message
|
||||||
printerr(error_data.message)
|
printerr(error_data.message)
|
||||||
__bugbot_server_thread.call_deferred("wait_to_finish")
|
_thread.call_deferred("wait_to_finish")
|
||||||
return Error.FAILED
|
return Error.FAILED
|
||||||
return Error.OK
|
return Error.OK
|
||||||
|
|
||||||
@ -356,7 +356,7 @@ func __create_bug_data_from_server_response(bug_in:Dictionary, map_name:String,
|
|||||||
return bug
|
return bug
|
||||||
|
|
||||||
|
|
||||||
func __get_server_data(http_client:HTTPClient, header_data:Array) -> BugbotJiraServerData:
|
func __get_server_data(thread:Thread, http_client:HTTPClient, header_data:Array) -> BugbotJiraServerData:
|
||||||
var server_data : BugbotJiraServerData = BugbotJiraServerData.new()
|
var server_data : BugbotJiraServerData = BugbotJiraServerData.new()
|
||||||
server_data.timestamp = Time.get_ticks_msec()
|
server_data.timestamp = Time.get_ticks_msec()
|
||||||
|
|
||||||
@ -368,7 +368,7 @@ func __get_server_data(http_client:HTTPClient, header_data:Array) -> BugbotJiraS
|
|||||||
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
||||||
var project_response_string : String = __get_http_client_chunk_response(http_client)
|
var project_response_string : String = __get_http_client_chunk_response(http_client)
|
||||||
var project_response : Array = JSON.parse_string(project_response_string)
|
var project_response : Array = JSON.parse_string(project_response_string)
|
||||||
if __validate_server_response(project_response) != Error.OK:
|
if __validate_server_response(thread, project_response) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
server_data.project_name = _get_project_name()
|
server_data.project_name = _get_project_name()
|
||||||
@ -392,7 +392,7 @@ func __get_server_data(http_client:HTTPClient, header_data:Array) -> BugbotJiraS
|
|||||||
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
||||||
var issue_response_string : String = __get_http_client_chunk_response(http_client)
|
var issue_response_string : String = __get_http_client_chunk_response(http_client)
|
||||||
var issue_response : Dictionary = JSON.parse_string(issue_response_string)
|
var issue_response : Dictionary = JSON.parse_string(issue_response_string)
|
||||||
if __validate_server_response(issue_response) != Error.OK:
|
if __validate_server_response(thread, issue_response) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
var bug_issue_type : String = ProjectSettings.get_setting("bugbot/reporting/jira/bug_issue_type", DEFAULT_BUG_ISSUE_TYPE)
|
var bug_issue_type : String = ProjectSettings.get_setting("bugbot/reporting/jira/bug_issue_type", DEFAULT_BUG_ISSUE_TYPE)
|
||||||
@ -411,7 +411,7 @@ func __get_server_data(http_client:HTTPClient, header_data:Array) -> BugbotJiraS
|
|||||||
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
assert(http_client.get_status() == HTTPClient.STATUS_BODY or http_client.get_status() == HTTPClient.STATUS_CONNECTED)
|
||||||
var fields_response_string : String = __get_http_client_chunk_response(http_client)
|
var fields_response_string : String = __get_http_client_chunk_response(http_client)
|
||||||
var fields_response : Dictionary = JSON.parse_string(fields_response_string)
|
var fields_response : Dictionary = JSON.parse_string(fields_response_string)
|
||||||
if __validate_server_response(fields_response) != Error.OK:
|
if __validate_server_response(thread, fields_response) != Error.OK:
|
||||||
return
|
return
|
||||||
|
|
||||||
var map_name_field_name : String = ProjectSettings.get_setting("bugbot/reporting/jira/map_name_field", DEFAULT_MAP_NAME_FIELD)
|
var map_name_field_name : String = ProjectSettings.get_setting("bugbot/reporting/jira/map_name_field", DEFAULT_MAP_NAME_FIELD)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user