add license, move folders

This commit is contained in:
Nordup 2024-05-04 00:14:24 +04:00
parent 185cc74060
commit 271c4a46a1
132 changed files with 21 additions and 0 deletions

View file

@ -0,0 +1,34 @@
extends Node
class_name Analitycs
@export var api: ApiSettings
signal analytics_ready
func _ready() -> void:
await get_user_id()
analytics_ready.emit()
func send_event(body: Dictionary = {}) -> void:
var url = api.analytics_event
var callback = func(_result, code, _headers, _body):
if code != 200: Debug.logclr("Request send_event failed. Code " + str(code), Color.RED)
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)
func get_user_id() -> void:
AnalyticsEvents.user_id = DataSaver.get_string("analytics", "user_id")
if not AnalyticsEvents.user_id.is_empty(): return
var url = api.create_user_id
var callback = func(_result, code, _headers, body):
if code == 200:
AnalyticsEvents.user_id = body.get_string_from_utf8()
DataSaver.set_value("analytics", "user_id", AnalyticsEvents.user_id)
else: Debug.logclr("Request create_user_id failed. Code " + str(code), Color.RED)
var err = await Backend.request(url, callback)
if err != HTTPRequest.RESULT_SUCCESS: Debug.logclr("Cannot send request create_user_id", Color.RED)

View file

@ -0,0 +1,79 @@
extends Node
#class_name AnalyticsEvents
var user_id := "none"
func base(event_name: String) -> Dictionary:
var event = {}
event.event_name = event_name
event.user_id = user_id
return event
# APP
func app_open() -> Dictionary:
return base("application_open")
func heartbeat(time_spend: int) -> Dictionary:
var event = base("heartbeat")
event.time_spend = time_spend
return event
func app_exit(time_spend: int) -> Dictionary:
var event = base("application_exit")
event.time_spend = time_spend
return event
# GATE
func search(query: String) -> Dictionary:
var event = base("search")
event.query = query
return event
func gate_open(url: String) -> Dictionary:
var event = base("gate_open")
event.gate_url = url
return event
func gate_enter(url: String, download_time: int) -> Dictionary:
var event = base("gate_enter")
event.gate_url = url
event.download_time = download_time
return event
func gate_exit(url: String, time_spend: int) -> Dictionary:
var event = base("gate_exit")
event.gate_url = url
event.time_spend = time_spend
return event
# BOOKMARK
func bookmark(url: String) -> Dictionary:
var event = base("bookmark")
event.gate_url = url
return event
func unbookmark(url: String) -> Dictionary:
var event = base("unbookmark")
event.gate_url = url
return event
# ERROR
func error(msg: String) -> Dictionary:
var event = base("error")
event.msg = msg
return event

View file

@ -0,0 +1,13 @@
extends Node
class_name AnalyticsSender
var analytics: Analitycs
func _enter_tree() -> void:
analytics = get_parent()
analytics.analytics_ready.connect(start)
func start() -> void:
pass

View file

@ -0,0 +1,37 @@
extends AnalyticsSender
class_name AnalyticsSenderApp
const HEARTBEAT_DELAY = 60
var heartbeat_timer: Timer
func start() -> void:
super.start()
analytics.send_event(AnalyticsEvents.app_open())
start_heartbeat()
# Send latest exit event
var json: String = DataSaver.get_string("analytics", "app_exit")
if json.is_empty(): return
DataSaver.set_value("analytics", "app_exit", "")
analytics.send_event(JSON.parse_string(json))
func start_heartbeat() -> void:
heartbeat_timer = Timer.new()
add_child(heartbeat_timer)
heartbeat_timer.timeout.connect(send_hearbeat)
heartbeat_timer.start(HEARTBEAT_DELAY)
func send_hearbeat() -> void:
var time_spend = int(Time.get_ticks_msec() / 1000)
analytics.send_event(AnalyticsEvents.heartbeat(time_spend))
func _exit_tree() -> void:
# Save to send on open
var time_spend = int(Time.get_ticks_msec() / 1000)
var event = AnalyticsEvents.app_exit(time_spend)
DataSaver.set_value("analytics", "app_exit", JSON.stringify(event))

View file

@ -0,0 +1,20 @@
extends AnalyticsSender
class_name AnalyticsSenderBookmark
@export var bookmarks: Bookmarks
func _ready() -> void:
super.start()
bookmarks.on_star.connect(send_bookmark)
bookmarks.on_unstar.connect(send_unbookmark)
func send_bookmark(gate: Gate, featured: bool) -> void:
if featured: return
analytics.send_event(AnalyticsEvents.bookmark(gate.url))
func send_unbookmark(gate: Gate) -> void:
analytics.send_event(AnalyticsEvents.unbookmark(gate.url))

View file

@ -0,0 +1,12 @@
extends AnalyticsSender
class_name AnalyticsSenderError
func start() -> void:
super.start()
Debug.error.connect(send_error)
func send_error(msg: String) -> void:
analytics.send_event(AnalyticsEvents.error(msg))

View file

@ -0,0 +1,57 @@
extends AnalyticsSender
class_name AnalyticsSenderGate
@export var gate_events: GateEvents
var gate_open_time: int
var gate_url: String
func start() -> void:
super.start()
gate_events.search.connect(send_search)
gate_events.open_gate.connect(send_gate_open)
gate_events.gate_entered.connect(send_gate_enter)
gate_events.exit_gate.connect(send_gate_exit)
# Send latest exit event
var json: String = DataSaver.get_string("analytics", "send_gate_exit")
if json.is_empty(): return
DataSaver.set_value("analytics", "send_gate_exit", "")
analytics.send_event(JSON.parse_string(json))
func send_search(query: String) -> void:
if not gate_url.is_empty(): send_gate_exit()
analytics.send_event(AnalyticsEvents.search(query))
func send_gate_open(url: String) -> void:
if not gate_url.is_empty(): send_gate_exit()
gate_url = url
gate_open_time = int(Time.get_ticks_msec() / 1000)
analytics.send_event(AnalyticsEvents.gate_open(url))
func send_gate_enter() -> void:
var download_time = int(Time.get_ticks_msec() / 1000) - gate_open_time
gate_open_time = int(Time.get_ticks_msec() / 1000)
analytics.send_event(AnalyticsEvents.gate_enter(gate_url, download_time))
func send_gate_exit() -> void:
var time_spend = int(Time.get_ticks_msec() / 1000) - gate_open_time
analytics.send_event(AnalyticsEvents.gate_exit(gate_url, time_spend))
gate_url = ""
func _exit_tree() -> void:
if gate_url.is_empty(): return
# Save to send on open
var time_spend = int(Time.get_ticks_msec() / 1000) - gate_open_time
var event = AnalyticsEvents.gate_exit(gate_url, time_spend)
DataSaver.set_value("analytics", "send_gate_exit", JSON.stringify(event))