diff --git a/project/project.godot b/project/project.godot index 12193c5..c54ce0b 100644 --- a/project/project.godot +++ b/project/project.godot @@ -26,6 +26,7 @@ DataSaver="*res://scripts/data_saver.gd" FileDownloader="*res://scripts/loading/file_downloader.gd" Debug="*res://scripts/debug-log/debug.gd" AnalyticsEvents="*res://scripts/analytics/analytics_events.gd" +Backend="*res://scripts/backend.gd" [debug] diff --git a/project/resources/backend.tres b/project/resources/backend.tres index 34e67ca..133bb4f 100644 --- a/project/resources/backend.tres +++ b/project/resources/backend.tres @@ -1,9 +1,9 @@ [gd_resource type="Resource" script_class="BackendSettings" load_steps=2 format=3 uid="uid://cjcdum6fm4ta0"] -[ext_resource type="Script" path="res://scripts/resources/backend.gd" id="1_6ck4k"] +[ext_resource type="Script" path="res://scripts/resources/backend_settings.gd" id="1_oiju7"] [resource] -script = ExtResource("1_6ck4k") +script = ExtResource("1_oiju7") local_url = "http://127.0.0.1:8000" remote_url = "http://95.163.241.188:8000" -host_type = 1 +host_type = 0 diff --git a/project/scenes/menu_body/search_results.tscn b/project/scenes/menu_body/search_results.tscn index 9145bdc..6dd0464 100644 --- a/project/scenes/menu_body/search_results.tscn +++ b/project/scenes/menu_body/search_results.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=3 format=3 uid="uid://dh3owgirapji5"] +[gd_scene load_steps=4 format=3 uid="uid://dh3owgirapji5"] [ext_resource type="Script" path="res://scripts/ui/search/search_results.gd" id="1_bycb5"] [ext_resource type="Resource" uid="uid://b1xvdym0qh6td" path="res://resources/gate_events.res" id="2_2plpa"] +[ext_resource type="Resource" uid="uid://cjcdum6fm4ta0" path="res://resources/backend.tres" id="3_263ma"] [node name="search_results" type="Control"] layout_mode = 3 @@ -28,6 +29,7 @@ layout_mode = 2 size_flags_horizontal = 3 script = ExtResource("1_bycb5") gate_events = ExtResource("2_2plpa") +backend = ExtResource("3_263ma") [node name="Label" type="Label" parent="HBoxContainer/VBoxContainer"] self_modulate = Color(1, 1, 1, 0.6) diff --git a/project/scripts/analytics/analytics.gd b/project/scripts/analytics/analytics.gd index 6391460..a6af916 100644 --- a/project/scripts/analytics/analytics.gd +++ b/project/scripts/analytics/analytics.gd @@ -15,7 +15,7 @@ func send_event(body: Dictionary = {}) -> void: var callback = func(_result, code, _headers, _body): if code != 200: Debug.logclr("Request send_event failed. Code " + str(code), Color.RED) - var err = await request(url, callback, body, HTTPClient.METHOD_POST) + var err = await Backend.request(url, callback, body, HTTPClient.METHOD_POST) if err != HTTPRequest.RESULT_SUCCESS: Debug.logclr("Cannot send request send_event", Color.RED) @@ -26,22 +26,5 @@ func get_user_id() -> void: AnalyticsEvents.user_id = body.get_string_from_utf8() else: Debug.logclr("Request get_user_id failed. Code " + str(code), Color.RED) - var err = await request(url, callback) + var err = await Backend.request(url, callback) if err != HTTPRequest.RESULT_SUCCESS: Debug.logclr("Cannot send request get_user_id", Color.RED) - - -func request(url: String, callback: Callable, - body: Dictionary = {}, method: int = HTTPClient.METHOD_GET) -> Error: - var data = JSON.stringify(body) - var headers = [] - - var http = HTTPRequest.new() - http.use_threads = true - add_child(http) - - var err = http.request(url, headers, method, data) - var res = await http.request_completed - callback.call(res[0], res[1], res[2], res[3]) - remove_child(http) - - return err diff --git a/project/scripts/backend.gd b/project/scripts/backend.gd new file mode 100644 index 0000000..f16282c --- /dev/null +++ b/project/scripts/backend.gd @@ -0,0 +1,19 @@ +extends Node +#class_name Backend + + +func request(url: String, callback: Callable, + body: Dictionary = {}, method: int = HTTPClient.METHOD_GET) -> Error: + var data = JSON.stringify(body) + var headers = [] + + var http = HTTPRequest.new() + http.use_threads = true + add_child(http) + + var err = http.request(url, headers, method, data) + var res = await http.request_completed + callback.call(res[0], res[1], res[2], res[3]) + remove_child(http) + + return err diff --git a/project/scripts/resources/backend.gd b/project/scripts/resources/backend_settings.gd similarity index 86% rename from project/scripts/resources/backend.gd rename to project/scripts/resources/backend_settings.gd index 3d01fcd..fdd6b4c 100644 --- a/project/scripts/resources/backend.gd +++ b/project/scripts/resources/backend_settings.gd @@ -18,3 +18,6 @@ var analytics_event: String : var get_user_id: String : get: return url + "/api/get_user_id?device_id=" + +var search: String : + get: return url + "/api/search?query=" diff --git a/project/scripts/ui/search/search_results.gd b/project/scripts/ui/search/search_results.gd index db6369b..069fcd3 100644 --- a/project/scripts/ui/search/search_results.gd +++ b/project/scripts/ui/search/search_results.gd @@ -1,6 +1,9 @@ extends VBoxContainer @export var gate_events: GateEvents +@export var backend: BackendSettings + +var result: String func _ready() -> void: @@ -9,3 +12,30 @@ func _ready() -> void: func search(query: String) -> void: Debug.logclr("======== " + query + " ========", Color.LIGHT_SEA_GREEN) + await search_request(query) + + var gates = JSON.parse_string(result) + if gates == null or gates.is_empty(): + Debug.logclr("No gates found", Color.YELLOW) + return + + for gate in gates: + var url = gate["url"] + var title = gate["title"] + var image = gate["image"] + var description = gate["description"] + Debug.logr(gate) + + +#func add_result() + + +func search_request(query: String): + var url = backend.search + query + var callback = func(_result, code, _headers, body): + if code == 200: + result = body.get_string_from_utf8() + else: Debug.logclr("Request search failed. Code " + str(code), Color.RED) + + var err = await Backend.request(url, callback) + if err != HTTPRequest.RESULT_SUCCESS: Debug.logclr("Cannot send request search", Color.RED)