search request

This commit is contained in:
Nordup 2023-06-22 01:29:23 +04:00
parent 2cf1eb61df
commit 323b9d3fbb
7 changed files with 61 additions and 23 deletions

View file

@ -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]

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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="

View file

@ -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)