analytics handles

This commit is contained in:
Nordup 2023-06-04 18:19:17 +03:00
parent 689afadaea
commit b21d008ec1
5 changed files with 62 additions and 16 deletions

View file

@ -25,6 +25,7 @@ config/windows_native_icon="res://the_gates/icons/icon.ico"
DataSaver="*res://the_gates/scripts/data_saver.gd" DataSaver="*res://the_gates/scripts/data_saver.gd"
FileDownloader="*res://the_gates/scripts/loading/file_downloader.gd" FileDownloader="*res://the_gates/scripts/loading/file_downloader.gd"
Debug="*res://the_gates/scripts/debug-log/debug.gd" Debug="*res://the_gates/scripts/debug-log/debug.gd"
Analytics="*res://the_gates/scripts/analytics/analytics.gd"
[display] [display]

View file

@ -1,7 +1,9 @@
[gd_resource type="Resource" script_class="BackendSettings" load_steps=2 format=3 uid="uid://cjcdum6fm4ta0"] [gd_resource type="Resource" script_class="BackendSettings" load_steps=2 format=3 uid="uid://cjcdum6fm4ta0"]
[ext_resource type="Script" path="res://the_gates/scripts/analytics/backend_settings.gd" id="1_8fkk2"] [ext_resource type="Script" path="res://the_gates/scripts/analytics/backend.gd" id="1_6ck4k"]
[resource] [resource]
script = ExtResource("1_8fkk2") script = ExtResource("1_6ck4k")
url = "http://95.163.241.188:8000/" local_url = "http://127.0.0.1:8000"
remote_url = "http://95.163.241.188:8000"
host_type = 0

View file

@ -1,24 +1,51 @@
extends Node extends Node
#class_name Analitycs #class_name Analitycs
var backend_settings = preload("res://the_gates/resources/backend_settings.tres") var backend := preload("res://the_gates/resources/backend.tres")
var handle = "api/analytics" var user_id := "none"
func _ready() -> void: func _ready() -> void:
send_event("application_enter") await get_user_id()
send_event({
"event_name" : "application_enter",
"user_id" : user_id
})
func send_event(name: String, body: Variant = null) -> void: func send_event(body: Variant = []) -> void:
var url = backend_settings.url + handle var url = backend.analytics_event
var callback = func(result, code, headers, body):
if code != 200: Debug.logerr("Request send_event failed. Code " + str(code))
var err = await request(url, callback, body, HTTPClient.METHOD_POST)
if err != HTTPRequest.RESULT_SUCCESS: Debug.logerr("Cannot send request send_event")
func get_user_id() -> void:
var url = backend.get_user_id + OS.get_unique_id()
var callback = func(result, code, headers, body):
if code == 200:
user_id = body.get_string_from_utf8()
Debug.logr("User id recieved: " + user_id)
else: Debug.logerr("Request get_user_id failed. Code " + str(code))
var err = await request(url, callback)
if err != HTTPRequest.RESULT_SUCCESS: Debug.logerr("Cannot send request get_user_id")
func request(url: String, callback: Callable,
body: Variant = [], method: int = HTTPClient.METHOD_GET) -> Error:
var data = JSON.stringify(body) var data = JSON.stringify(body)
var headers = []
var http = HTTPRequest.new() var http = HTTPRequest.new()
http.use_threads = true http.use_threads = true
add_child(http) add_child(http)
var err = http.request(url, [], HTTPClient.METHOD_POST, data) var err = http.request(url, headers, method, data)
await http.request_completed var res = await http.request_completed
callback.call(res[0], res[1], res[2], res[3])
remove_child(http) remove_child(http)
if err != HTTPRequest.RESULT_SUCCESS: return err
Debug.logerr("Analitycs event is not sent. Name: " + name)

View file

@ -0,0 +1,20 @@
extends Resource
class_name BackendSettings
enum HostType {
Local,
Remote
}
@export var local_url: String
@export var remote_url: String
@export var host_type: HostType
var url: String :
get: return local_url if host_type == HostType.Local else remote_url
var analytics_event: String :
get: return url + "/api/analytics_event"
var get_user_id: String :
get: return url + "/api/get_user_id?device_id="

View file

@ -1,4 +0,0 @@
extends Resource
class_name BackendSettings
@export var url: String