diff --git a/Luski.net/API.cs b/Luski.net/API.cs index 7cc78c5..4688b37 100644 --- a/Luski.net/API.cs +++ b/Luski.net/API.cs @@ -10,8 +10,28 @@ namespace Luski.net; public class API { public MainServer MainServer { get; internal set; } + + public bool IsAnyServerLoggedin { get; internal set; } internal List InternalServers { get; } = new(); public IReadOnlyList LoadedServers => InternalServers.AsReadOnly(); + + public Task TryGetPublicServer(out PublicServer Server, string Domain, string Version = "v1", + bool Secure = true) + { + try + { + Task result = GetPublicServer(Domain, Version, Secure); + Task.WaitAll(result); + Server = result.Result; + return Task.FromResult(true); + } + catch (Exception e) + { + Console.WriteLine(e); + Server = null!; + return Task.FromResult(false); + } + } public async Task GetPublicServer(string Domain, string Version = "v1", bool Secure = true) { @@ -20,7 +40,7 @@ public class API { IEnumerable isl = InternalServers.Where(a => (a.Domain == Domain && a.ApiVersion == Version)); if (isl.Any()) return isl.First(); - s = await PublicServer.GetServer(Domain, Version, Secure); + s = await PublicServer.GetServer(this, Domain, Version, Secure); } catch (Exception e) { @@ -40,7 +60,11 @@ public class API if (f is not null) { bool b = await s.LoginViaToken(f); - if (b) Console.WriteLine("Auto Login Successful"); + if (b) + { + Console.WriteLine("Auto Login Successful"); + IsAnyServerLoggedin = true; + } else { s.Token = null; @@ -60,7 +84,7 @@ public class API { DateTime dt = DateTime.UtcNow; Console.WriteLine("Conecting to main server '{0}' using API {1}.", Domain, Version); - MainServer = new(Domain, Version) + MainServer = new(this, Domain, Version) { ServerType = ServerType.Main }; diff --git a/Luski.net/Luski.net.csproj b/Luski.net/Luski.net.csproj index 62ec8b5..204f3c7 100755 --- a/Luski.net/Luski.net.csproj +++ b/Luski.net/Luski.net.csproj @@ -13,7 +13,7 @@ https://github.com/JacobTech-com/Luski.net True 1.0.0 - 2.0.0-alpha23 + 2.0.0-alpha24 diff --git a/Luski.net/MainServer.cs b/Luski.net/MainServer.cs index 26f2f76..876c1f5 100644 --- a/Luski.net/MainServer.cs +++ b/Luski.net/MainServer.cs @@ -20,8 +20,8 @@ namespace Luski.net; public partial class MainServer : Server { - internal MainServer(string Domain, string API_Version): - base(Domain, API_Version) + internal MainServer(API api, string Domain, string API_Version): + base(api, Domain, API_Version) { } diff --git a/Luski.net/PublicServer.Account.cs b/Luski.net/PublicServer.Account.cs index 92f2b5e..435e5a0 100644 --- a/Luski.net/PublicServer.Account.cs +++ b/Luski.net/PublicServer.Account.cs @@ -171,6 +171,7 @@ public partial class PublicServer stor); EncryptionHandler.OfflinePublicKey = null!; EncryptionHandler.OfflinePrivateKey = null!; + API_Handler.IsAnyServerLoggedin = true; return true; } else @@ -178,6 +179,7 @@ public partial class PublicServer throw new Exception(json?.ErrorMessage); } + API_Handler.IsAnyServerLoggedin = true; return true; } @@ -344,10 +346,12 @@ public partial class PublicServer // _ = await setkey.PostAsync($"{(Secure ? "https" : "http" )}://{Domain}/{ApiVersion}/Keys/SetOfflineKey", new StringContent(EncryptionHandler.OfflinePublicKey)); EncryptionHandler.OfflinePublicKey = null!; EncryptionHandler.OfflinePrivateKey = null!; + API_Handler.IsAnyServerLoggedin = true; return true; } else throw new Exception(json?.ErrorMessage); + API_Handler.IsAnyServerLoggedin = true; return true; } } \ No newline at end of file diff --git a/Luski.net/PublicServer.cs b/Luski.net/PublicServer.cs index 1539d63..8a7b9f3 100644 --- a/Luski.net/PublicServer.cs +++ b/Luski.net/PublicServer.cs @@ -31,15 +31,15 @@ public partial class PublicServer : Server public SocketAppUser User { get; private set; } = null!; - private PublicServer(string Domain, string API_Version, bool Secure = true) : - base(Domain, API_Version, Secure) + private PublicServer(API api,string Domain, string API_Version, bool Secure = true) : + base(api, Domain, API_Version, Secure) { } - internal static async Task GetServer(string Domain, string API_Version, bool Secure = true) + internal static async Task GetServer(API api, string Domain, string API_Version, bool Secure = true) { DateTime dt = DateTime.UtcNow; Console.WriteLine("Connecting to public server '{0}' using API {1}.", Domain, API_Version); - PublicServer s = new(Domain, API_Version, Secure); + PublicServer s = new(api, Domain, API_Version, Secure); ServerInfo? si = null; try { diff --git a/Luski.net/Server.cs b/Luski.net/Server.cs index 00ca01d..4cd4916 100644 --- a/Luski.net/Server.cs +++ b/Luski.net/Server.cs @@ -19,8 +19,10 @@ namespace Luski.net; public partial class Server { - internal Server(string Domain, string API_Version, bool Secure = true) + internal API API_Handler; + internal Server(API api_handle, string Domain, string API_Version, bool Secure = true) { + API_Handler = api_handle; this.Domain = Domain; this.ApiVersion = API_Version; this.Secure = Secure;