71 lines
2.6 KiB
C#
71 lines
2.6 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
using UnityEngine.Networking;
|
|
|
|
namespace Hallucinate.UI
|
|
{
|
|
public static class FirebaseService
|
|
{
|
|
private static string _baseUrl;
|
|
|
|
private static string BASE_URL
|
|
{
|
|
get
|
|
{
|
|
if (string.IsNullOrEmpty(_baseUrl))
|
|
{
|
|
// Nó sẽ tìm file tên "FirebaseConfig" trong bất kỳ folder "Resources" nào
|
|
var config = Resources.Load<FirebaseConfig>("FirebaseConfig");
|
|
if (config != null)
|
|
{
|
|
if (string.IsNullOrEmpty(config.baseUrl))
|
|
{
|
|
Debug.LogError("<color=red>[FirebaseService]</color> Base URL trong file FirebaseConfig đang trống!");
|
|
return null;
|
|
}
|
|
_baseUrl = config.baseUrl.TrimEnd('/');
|
|
}
|
|
else
|
|
{
|
|
Debug.LogError("<color=red>[FirebaseService]</color> Không tìm thấy file 'FirebaseConfig' trong folder Resources! " +
|
|
"Hãy đảm bảo bạn đã tạo file tại: Assets/.../Resources/FirebaseConfig");
|
|
return null;
|
|
}
|
|
}
|
|
return _baseUrl + "/users";
|
|
}
|
|
}
|
|
|
|
public static async Task<bool> IsUsernameTaken(string username)
|
|
{
|
|
string url = $"{BASE_URL}/{username}.json";
|
|
using (UnityWebRequest request = UnityWebRequest.Get(url))
|
|
{
|
|
var operation = request.SendWebRequest();
|
|
while (!operation.isDone) await Task.Yield();
|
|
|
|
if (request.result != UnityWebRequest.Result.Success) return false;
|
|
|
|
// Nếu kết quả trả về không phải "null" nghĩa là user đã tồn tại
|
|
return request.downloadHandler.text != "null";
|
|
}
|
|
}
|
|
|
|
public static async Task<bool> RegisterUser(string username)
|
|
{
|
|
string url = $"{BASE_URL}/{username}.json";
|
|
string jsonData = "{\"created_at\": \"" + DateTime.Now.ToString() + "\"}";
|
|
|
|
using (UnityWebRequest request = UnityWebRequest.Put(url, jsonData))
|
|
{
|
|
var operation = request.SendWebRequest();
|
|
while (!operation.isDone) await Task.Yield();
|
|
|
|
return request.result == UnityWebRequest.Result.Success;
|
|
}
|
|
}
|
|
}
|
|
}
|