diff --git a/Fuyu.Launcher/Fuyu.Launcher.csproj b/Fuyu.Launcher/Fuyu.Launcher.csproj index ee5c0fe..3ab2938 100644 --- a/Fuyu.Launcher/Fuyu.Launcher.csproj +++ b/Fuyu.Launcher/Fuyu.Launcher.csproj @@ -21,6 +21,7 @@ + diff --git a/Fuyu.Launcher/Layout/MainLayout.razor b/Fuyu.Launcher/Layout/MainLayout.razor index 6d57ad9..b2332ae 100644 --- a/Fuyu.Launcher/Layout/MainLayout.razor +++ b/Fuyu.Launcher/Layout/MainLayout.razor @@ -7,9 +7,9 @@ - - - Account + + + Login Settings diff --git a/Fuyu.Launcher/Pages/Account.razor b/Fuyu.Launcher/Pages/Account.razor index 663a37c..a2e927d 100644 --- a/Fuyu.Launcher/Pages/Account.razor +++ b/Fuyu.Launcher/Pages/Account.razor @@ -1,30 +1,31 @@ -@using Fuyu.Launcher.Services; +@using Fuyu.Platform.Common.Models.Fuyu.Accounts +@using Fuyu.Platform.Launcher.Services -@page "/" @page "/account" - Start Server - Start Game + Start EFT + Start Arena @code { - private void StartServer() + [SupplyParameterFromQuery(Name = "sessionid")] + private string sessionId { get; set; } + + private void StartEft_Clicked() { - using (var process = ProcessService.StartServer(SettingsService.ServerDirectory)) + using (var process = ProcessService.StartEft(SettingsService.EftDirectory, sessionId, SettingsService.EftAddress)) { process.Start(); } } - private void StartEft() + private void StartArena_Clicked() { - var sessionId = "test"; - - using (var process = ProcessService.StartEft(SettingsService.ClientDirectory, sessionId, SettingsService.Address)) + using (var process = ProcessService.StartArena(SettingsService.ArenaDirectory, sessionId, SettingsService.ArenaAddress)) { process.Start(); } diff --git a/Fuyu.Launcher/Pages/Login.razor b/Fuyu.Launcher/Pages/Login.razor new file mode 100644 index 0000000..7ad399b --- /dev/null +++ b/Fuyu.Launcher/Pages/Login.razor @@ -0,0 +1,45 @@ +@using Fuyu.Platform.Launcher.Services; + +@inject NavigationManager Navigation + +@page "/" +@page "/login" + + + + + + Username: + + Password: + +
+
+ Login + Register +
+ +
+ +@code +{ + string username = string.Empty; + string password = string.Empty; + + private void Login_Clicked(EventArgs e) + { + var hashedPassword = HashService.GetSHA256(password); + var sessionId = RequestService.LoginAccount(username, hashedPassword); + + if (sessionId == string.Empty) + { + // TODO: + // * show error + // -- seionmoya, 2024/09/02 + } + else + { + Navigation.NavigateTo($"/account?sessionid={sessionId}"); + } + } +} diff --git a/Fuyu.Launcher/Pages/Register.razor b/Fuyu.Launcher/Pages/Register.razor new file mode 100644 index 0000000..6ac272e --- /dev/null +++ b/Fuyu.Launcher/Pages/Register.razor @@ -0,0 +1,50 @@ +@using Fuyu.Platform.Common.Models.Fuyu.Accounts +@using Fuyu.Platform.Launcher.Services; + +@inject NavigationManager Navigation + +@page "/register" + + + + + + Username: + + Password: + + Edition: + +
+
+ Register + Login +
+ +
+ +@code +{ + string username = string.Empty; + string password = string.Empty; + string edition = "unheard"; + + private void Register_Clicked(EventArgs e) + { + var hashedPassword = HashService.GetSHA256(password); + var registerStatus = RequestService.RegisterAccount(username, hashedPassword, edition); + + switch (registerStatus) + { + case ERegisterStatus.Success: + Navigation.NavigateTo("/login"); + break; + + case ERegisterStatus.AlreadyExists: + // TODO: + // * show error + // -- seionmoya, 2024/09/02 + break; + } + } +} diff --git a/Fuyu.Launcher/Pages/Settings.razor b/Fuyu.Launcher/Pages/Settings.razor index d432608..c1bad5b 100644 --- a/Fuyu.Launcher/Pages/Settings.razor +++ b/Fuyu.Launcher/Pages/Settings.razor @@ -1,43 +1,63 @@ -@using Fuyu.Launcher.Services; +@using Fuyu.Platform.Launcher.Services; @page "/settings" - - - Path to installation: - + + + Server address: + - - - Path to installation: - + + Server address: - + + Client location: + + + + + + Server address: + + Client location: + @code { - string serverDirectory = SettingsService.ServerDirectory; - string clientDirectory = SettingsService.ClientDirectory; - string address = SettingsService.Address; + string fuyuAddress = SettingsService.FuyuAddress; + string eftAddress = SettingsService.EftAddress; + string arenaAddress = SettingsService.ArenaAddress; + string eftDirectory = SettingsService.EftDirectory; + string arenaDirectory = SettingsService.EftDirectory; + + private void FuyuAddress_TextChanged(ChangeEventArgs e) + { + SettingsService.FuyuAddress = (string)e.Value; + } + + private void EftAddress_TextChanged(ChangeEventArgs e) + { + SettingsService.EftAddress = (string)e.Value; + } - private void ServerDirectory_TextChanged(ChangeEventArgs e) + private void ArenaAddress_TextChanged(ChangeEventArgs e) { - SettingsService.ServerDirectory = (string)e.Value; + SettingsService.ArenaAddress = (string)e.Value; } - private void ClientDirectory_TextChanged(ChangeEventArgs e) + private void EftDirectory_TextChanged(ChangeEventArgs e) { - SettingsService.ClientDirectory = (string)e.Value; + SettingsService.EftDirectory = (string)e.Value; } - private void Address_TextChanged(ChangeEventArgs e) + private void ArenaDirectory_TextChanged(ChangeEventArgs e) { - SettingsService.Address = (string)e.Value; + SettingsService.ArenaDirectory = (string)e.Value; } } diff --git a/Fuyu.Launcher/Services/SettingsService.cs b/Fuyu.Launcher/Services/SettingsService.cs deleted file mode 100644 index d83e2d7..0000000 --- a/Fuyu.Launcher/Services/SettingsService.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; - -namespace Fuyu.Launcher.Services -{ - public static class SettingsService - { - public static string ServerDirectory; - public static string ClientDirectory; - public static string Address; - - static SettingsService() - { - ServerDirectory = Environment.CurrentDirectory; - ClientDirectory = Environment.CurrentDirectory; - Address = "http://localhost:8000"; - } - } -} diff --git a/Fuyu.Platform.Common/IO/VFS.cs b/Fuyu.Platform.Common/IO/VFS.cs index 195f3e4..89692b5 100644 --- a/Fuyu.Platform.Common/IO/VFS.cs +++ b/Fuyu.Platform.Common/IO/VFS.cs @@ -1,19 +1,66 @@ +using System; using System.IO; namespace Fuyu.Platform.Common.IO { public class VFS { - public static bool Exists(string filepath) + public static bool DirectoryExists(string filepath) { - return File.Exists(filepath) || Directory.Exists(filepath); + return Directory.Exists(filepath); + } + + public static bool FileExists(string filepath) + { + return File.Exists(filepath); + } + + public static string[] GetFiles(string path) + { + if (!Directory.Exists(path)) + { + throw new DirectoryNotFoundException($"Directory {path} doesn't exist."); + } + + return Directory.GetFiles(path); + } + + public static void CreateDirectory(string path) + { + Directory.CreateDirectory(path); + } + + public static string ReadTextFile(string filepath) + { + var path = Path.GetDirectoryName(filepath); + + if (!DirectoryExists(path)) + { + throw new DirectoryNotFoundException($"Directory {path} doesn't exist."); + } + + if (!File.Exists(filepath)) + { + throw new FileNotFoundException($"File {filepath} doesn't exist."); + } + + using (var fs = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.None)) + { + using (var sr = new StreamReader(fs)) + { + var text = sr.ReadToEnd(); + return text; + } + } } public static void WriteTextFile(string filepath, string text) { - if (!Exists(filepath)) + var path = Path.GetDirectoryName(filepath); + + if (!DirectoryExists(path)) { - Directory.CreateDirectory(Path.GetDirectoryName(filepath)); + CreateDirectory(path); } using (var fs = new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)) diff --git a/Fuyu.Platform.Common/Models/EFT/Common/MongoId.cs b/Fuyu.Platform.Common/Models/EFT/Common/MongoId.cs index baddc3d..622558f 100644 --- a/Fuyu.Platform.Common/Models/EFT/Common/MongoId.cs +++ b/Fuyu.Platform.Common/Models/EFT/Common/MongoId.cs @@ -36,7 +36,7 @@ public MongoId([JsonProperty("$value")] string id) { if (id == null || id.Length != 24) { - throw new ArgumentOutOfRangeException("Critical MongoId error: incorrect length. Id: " + id); + throw new ArgumentOutOfRangeException($"Critical MongoId error: incorrect length. Id: {id}"); } _timeStamp = GetTimestamp(id); diff --git a/Fuyu.Platform.Common/Models/Fuyu/Account.cs b/Fuyu.Platform.Common/Models/Fuyu/Accounts/Account.cs similarity index 72% rename from Fuyu.Platform.Common/Models/Fuyu/Account.cs rename to Fuyu.Platform.Common/Models/Fuyu/Accounts/Account.cs index 0188239..946f059 100644 --- a/Fuyu.Platform.Common/Models/Fuyu/Account.cs +++ b/Fuyu.Platform.Common/Models/Fuyu/Accounts/Account.cs @@ -1,11 +1,13 @@ using System.Runtime.Serialization; -using Fuyu.Platform.Common.Models.Fuyu.Savegame; -namespace Fuyu.Platform.Common.Models.Fuyu +namespace Fuyu.Platform.Common.Models.Fuyu.Accounts { [DataContract] public struct Account { + [DataMember] + public int Id; + [DataMember] public string Username; diff --git a/Fuyu.Platform.Common/Models/Fuyu/Accounts/ERegisterStatus.cs b/Fuyu.Platform.Common/Models/Fuyu/Accounts/ERegisterStatus.cs new file mode 100644 index 0000000..f1961c6 --- /dev/null +++ b/Fuyu.Platform.Common/Models/Fuyu/Accounts/ERegisterStatus.cs @@ -0,0 +1,8 @@ +namespace Fuyu.Platform.Common.Models.Fuyu.Accounts +{ + public enum ERegisterStatus + { + AlreadyExists, + Success + } +} \ No newline at end of file diff --git a/Fuyu.Platform.Common/Models/Fuyu/Savegame/EftProfile.cs b/Fuyu.Platform.Common/Models/Fuyu/Accounts/EftProfile.cs similarity index 87% rename from Fuyu.Platform.Common/Models/Fuyu/Savegame/EftProfile.cs rename to Fuyu.Platform.Common/Models/Fuyu/Accounts/EftProfile.cs index 22668bf..d1910b9 100644 --- a/Fuyu.Platform.Common/Models/Fuyu/Savegame/EftProfile.cs +++ b/Fuyu.Platform.Common/Models/Fuyu/Accounts/EftProfile.cs @@ -1,7 +1,7 @@ using System.Runtime.Serialization; using Fuyu.Platform.Common.Models.EFT.Profiles; -namespace Fuyu.Platform.Common.Models.Fuyu.Savegame +namespace Fuyu.Platform.Common.Models.Fuyu.Accounts { [DataContract] public struct EftProfile diff --git a/Fuyu.Platform.Common/Models/Fuyu/Savegame/EftSave.cs b/Fuyu.Platform.Common/Models/Fuyu/Accounts/EftSave.cs similarity index 83% rename from Fuyu.Platform.Common/Models/Fuyu/Savegame/EftSave.cs rename to Fuyu.Platform.Common/Models/Fuyu/Accounts/EftSave.cs index 9bb5e90..65075ca 100644 --- a/Fuyu.Platform.Common/Models/Fuyu/Savegame/EftSave.cs +++ b/Fuyu.Platform.Common/Models/Fuyu/Accounts/EftSave.cs @@ -1,6 +1,6 @@ using System.Runtime.Serialization; -namespace Fuyu.Platform.Common.Models.Fuyu.Savegame +namespace Fuyu.Platform.Common.Models.Fuyu.Accounts { [DataContract] public struct EftSave diff --git a/Fuyu.Platform.Common/Models/Fuyu/Requests/AccountLoginRequest.cs b/Fuyu.Platform.Common/Models/Fuyu/Requests/AccountLoginRequest.cs new file mode 100644 index 0000000..16d80df --- /dev/null +++ b/Fuyu.Platform.Common/Models/Fuyu/Requests/AccountLoginRequest.cs @@ -0,0 +1,14 @@ +using System.Runtime.Serialization; + +namespace Fuyu.Platform.Common.Models.Fuyu.Requests +{ + [DataContract] + public struct AccountLoginRequest + { + [DataMember] + public string Username; + + [DataMember] + public string Password; + } +} \ No newline at end of file diff --git a/Fuyu.Platform.Common/Models/Fuyu/Requests/AccountRegisterRequest.cs b/Fuyu.Platform.Common/Models/Fuyu/Requests/AccountRegisterRequest.cs new file mode 100644 index 0000000..74014cc --- /dev/null +++ b/Fuyu.Platform.Common/Models/Fuyu/Requests/AccountRegisterRequest.cs @@ -0,0 +1,17 @@ +using System.Runtime.Serialization; + +namespace Fuyu.Platform.Common.Models.Fuyu.Requests +{ + [DataContract] + public struct AccountRegisterRequest + { + [DataMember] + public string Username; + + [DataMember] + public string Password; + + [DataMember] + public string Edition; + } +} \ No newline at end of file diff --git a/Fuyu.Platform.Common/Models/Fuyu/Response/AccountLoginResponse.cs b/Fuyu.Platform.Common/Models/Fuyu/Response/AccountLoginResponse.cs new file mode 100644 index 0000000..7fedd5e --- /dev/null +++ b/Fuyu.Platform.Common/Models/Fuyu/Response/AccountLoginResponse.cs @@ -0,0 +1,11 @@ +using System.Runtime.Serialization; + +namespace Fuyu.Platform.Common.Models.Fuyu.Responses +{ + [DataContract] + public struct AccountLoginResponse + { + [DataMember] + public string SessionId; + } +} \ No newline at end of file diff --git a/Fuyu.Platform.Common/Models/Fuyu/Response/AccountRegisterResponse.cs b/Fuyu.Platform.Common/Models/Fuyu/Response/AccountRegisterResponse.cs new file mode 100644 index 0000000..185effb --- /dev/null +++ b/Fuyu.Platform.Common/Models/Fuyu/Response/AccountRegisterResponse.cs @@ -0,0 +1,12 @@ +using System.Runtime.Serialization; +using Fuyu.Platform.Common.Models.Fuyu.Accounts; + +namespace Fuyu.Platform.Common.Models.Fuyu.Responses +{ + [DataContract] + public struct AccountRegisterResponse + { + [DataMember] + public ERegisterStatus Status; + } +} \ No newline at end of file diff --git a/Fuyu.Platform.Common/README.md b/Fuyu.Platform.Common/README.md index 08e7303..b6fc2f7 100644 --- a/Fuyu.Platform.Common/README.md +++ b/Fuyu.Platform.Common/README.md @@ -68,7 +68,7 @@ public class Program static async Task Main() { // make a client instance - var client = new HttpClient("http://localhost:8000"); + var client = new HttpClient("http://localhost:8001"); // make request var data = await client.GetAsync("/helloworld"); diff --git a/Fuyu.Platform.Launcher/Fuyu.Platform.Launcher.csproj b/Fuyu.Platform.Launcher/Fuyu.Platform.Launcher.csproj index 58990cd..273b1b3 100644 --- a/Fuyu.Platform.Launcher/Fuyu.Platform.Launcher.csproj +++ b/Fuyu.Platform.Launcher/Fuyu.Platform.Launcher.csproj @@ -4,4 +4,8 @@ net8.0 + + + + diff --git a/Fuyu.Platform.Launcher/README.md b/Fuyu.Platform.Launcher/README.md index 0d36e77..6e78ed8 100644 --- a/Fuyu.Platform.Launcher/README.md +++ b/Fuyu.Platform.Launcher/README.md @@ -12,7 +12,7 @@ are a couple of things you need to provide: - `cwd`: Current working directory. This is also where `EscapeFromTarkov.exe` must be located. -- `accountId`: The user to login. +- `sessionId`: The user's login session. - `address`: Main server address. ```cs @@ -24,10 +24,10 @@ public class Program static void Main() { var cwd = Environment.CurrentDirectory; - var accountId = 659885; - var address = "http://localhost:8000"; + var sessionId = "1234567890abcdef"; + var address = "http://localhost:8001"; - using (var process = ProcessService.StartEft(cwd, accountId, address)) + using (var process = ProcessService.StartEft(cwd, sessionId, address)) { process.Start(); } diff --git a/Fuyu.Platform.Launcher/Services/HashService.cs b/Fuyu.Platform.Launcher/Services/HashService.cs new file mode 100644 index 0000000..93150a9 --- /dev/null +++ b/Fuyu.Platform.Launcher/Services/HashService.cs @@ -0,0 +1,17 @@ +using System; +using System.Security.Cryptography; +using System.Text; + +namespace Fuyu.Platform.Launcher.Services +{ + public static class HashService + { + public static string GetSHA256(string text) + { + var bytes = Encoding.UTF8.GetBytes(text); + var sha256 = SHA256.HashData(bytes); + var hash = Convert.ToHexString(sha256); + return hash; + } + } +} diff --git a/Fuyu.Platform.Launcher/Services/ProcessService.cs b/Fuyu.Platform.Launcher/Services/ProcessService.cs index 95c41b0..48b1a99 100644 --- a/Fuyu.Platform.Launcher/Services/ProcessService.cs +++ b/Fuyu.Platform.Launcher/Services/ProcessService.cs @@ -26,14 +26,14 @@ public static Process StartEft(string cwd, string sessionId, string address) }; } - public static Process StartServer(string cwd) + public static Process StartArena(string cwd, string sessionId, string address) { return new Process() { StartInfo = new ProcessStartInfo() { - Arguments = string.Empty, - FileName = Path.Combine(cwd, "Fuyu.Server.exe"), + Arguments = GetLaunchArguments(sessionId, address), + FileName = Path.Combine(cwd, "EscapeFromTarkovArena.exe"), WorkingDirectory = cwd } }; diff --git a/Fuyu.Platform.Launcher/Services/RequestService.cs b/Fuyu.Platform.Launcher/Services/RequestService.cs new file mode 100644 index 0000000..84f0e10 --- /dev/null +++ b/Fuyu.Platform.Launcher/Services/RequestService.cs @@ -0,0 +1,54 @@ +using System.Text; +using Fuyu.Platform.Common.Models.Fuyu.Accounts; +using Fuyu.Platform.Common.Models.Fuyu.Requests; +using Fuyu.Platform.Common.Models.Fuyu.Responses; +using Fuyu.Platform.Common.Networking; +using Fuyu.Platform.Common.Serialization; + +namespace Fuyu.Platform.Launcher.Services +{ + public static class RequestService + { + private static readonly HttpClient _httpClient; + + static RequestService() + { + _httpClient = new HttpClient(SettingsService.FuyuAddress); + } + + private static T2 HttpPost(string path, T1 request) + { + var requestJson = Json.Stringify(request); + var requestBytes = Encoding.UTF8.GetBytes(requestJson); + var responseBytes = _httpClient.Post(path, requestBytes); + var responseJson = Encoding.UTF8.GetString(responseBytes); + var response = Json.Parse(responseJson); + return response; + } + + public static ERegisterStatus RegisterAccount(string username, string password, string edition) + { + var request = new AccountRegisterRequest() + { + Username = username, + Password = password, + Edition = edition + }; + var response = HttpPost("/account/register", request); + + return response.Status; + } + + public static string LoginAccount(string username, string password) + { + var request = new AccountLoginRequest() + { + Username = username, + Password = password + }; + var response = HttpPost("/account/login", request); + + return response.SessionId; + } + } +} diff --git a/Fuyu.Platform.Launcher/Services/SettingsService.cs b/Fuyu.Platform.Launcher/Services/SettingsService.cs new file mode 100644 index 0000000..e12f56e --- /dev/null +++ b/Fuyu.Platform.Launcher/Services/SettingsService.cs @@ -0,0 +1,28 @@ +using System; + +namespace Fuyu.Platform.Launcher.Services +{ + public static class SettingsService + { + // server settings + public static string FuyuAddress; + public static string EftAddress; + public static string ArenaAddress; + + // client settings + public static string EftDirectory; + public static string ArenaDirectory; + + static SettingsService() + { + // server settings + FuyuAddress = "http://localhost:8000"; + EftAddress = "http://localhost:8001"; + ArenaAddress = "http://localhost:8020"; + + // client settings + EftDirectory = Environment.CurrentDirectory; + ArenaDirectory = Environment.CurrentDirectory; + } + } +} diff --git a/Fuyu.Platform.Server/Behaviours/EFT/CustomizationStorage.cs b/Fuyu.Platform.Server/Behaviours/EFT/CustomizationStorage.cs index 8858d7e..379460b 100644 --- a/Fuyu.Platform.Server/Behaviours/EFT/CustomizationStorage.cs +++ b/Fuyu.Platform.Server/Behaviours/EFT/CustomizationStorage.cs @@ -16,7 +16,9 @@ public override void Run(HttpContext context) var sessionId = context.GetSessionId(); var account = FuyuDatabase.Accounts.GetAccount(sessionId); - // TODO: PVP-PVE STATE DETECTION + // TODO: + // * PVP-PVE state detection + // -- seionmoya, 2024/08/28 var response = new ResponseBody() { data = new CustomizationStorageResponse() diff --git a/Fuyu.Platform.Server/Behaviours/EFT/GameBotGenerate.cs b/Fuyu.Platform.Server/Behaviours/EFT/GameBotGenerate.cs index 2ab85e7..7cd9c67 100644 --- a/Fuyu.Platform.Server/Behaviours/EFT/GameBotGenerate.cs +++ b/Fuyu.Platform.Server/Behaviours/EFT/GameBotGenerate.cs @@ -1,4 +1,4 @@ -using Fuyu.Platform.Server.Services; +using Fuyu.Platform.Server.Services.EFT; using Fuyu.Platform.Common.Models.EFT.Profiles; using Fuyu.Platform.Common.Models.EFT.Requests; using Fuyu.Platform.Common.Models.EFT.Responses; diff --git a/Fuyu.Platform.Server/Behaviours/EFT/GameConfig.cs b/Fuyu.Platform.Server/Behaviours/EFT/GameConfig.cs index c5b0c45..23e1890 100644 --- a/Fuyu.Platform.Server/Behaviours/EFT/GameConfig.cs +++ b/Fuyu.Platform.Server/Behaviours/EFT/GameConfig.cs @@ -18,11 +18,11 @@ public override void Run(HttpContext context) { backend = new Backends() { - Lobby = "http://localhost:8000", - Trading = "http://localhost:8000", - Messaging = "http://localhost:8000", - Main = "http://localhost:8000", - RagFair = "http://localhost:8000" + Lobby = "http://localhost:8001", + Trading = "http://localhost:8001", + Messaging = "http://localhost:8001", + Main = "http://localhost:8001", + RagFair = "http://localhost:8001" }, utc_time = 1724450891.010541, reportAvailable = true, diff --git a/Fuyu.Platform.Server/Behaviours/EFT/GameMode.cs b/Fuyu.Platform.Server/Behaviours/EFT/GameMode.cs index 3ba6eb2..0410e60 100644 --- a/Fuyu.Platform.Server/Behaviours/EFT/GameMode.cs +++ b/Fuyu.Platform.Server/Behaviours/EFT/GameMode.cs @@ -17,7 +17,7 @@ public override void Run(HttpContext context) data = new GameModeResponse() { gameMode = "pve", - backendUrl = "http://localhost:8000" + backendUrl = "http://localhost:8001" } }; diff --git a/Fuyu.Platform.Server/Behaviours/EFT/GameProfileCreate.cs b/Fuyu.Platform.Server/Behaviours/EFT/GameProfileCreate.cs index 8398285..db25057 100644 --- a/Fuyu.Platform.Server/Behaviours/EFT/GameProfileCreate.cs +++ b/Fuyu.Platform.Server/Behaviours/EFT/GameProfileCreate.cs @@ -6,9 +6,13 @@ using Fuyu.Platform.Common.Networking; using Fuyu.Platform.Common.Serialization; using Fuyu.Platform.Server.Databases; +using Fuyu.Platform.Server.Services.Fuyu; namespace Fuyu.Platform.Server.Behaviours.EFT { + // TODO: + // * move code into TemplateTable and ProfileService + // -- seionmoya, 2024/09/02 public class GameProfileCreate : HttpBehaviour { private readonly string _bearJson; @@ -29,7 +33,9 @@ public override void Run(HttpContext context) var accountId = FuyuDatabase.Accounts.GetSession(sessionId); var account = FuyuDatabase.Accounts.GetAccount(accountId); - // TODO: PVP-PVE STATE DETECTION + // TODO: + // * PVP-PVE state detection + // -- seionmoya, 2024/08/28 // generate ids var pmcId = new MongoId(accountId).ToString(); @@ -61,6 +67,7 @@ public override void Run(HttpContext context) // store account FuyuDatabase.Accounts.SetAccount(accountId, account); + AccountService.WriteAccountToDisk(account); // respond var response = new ResponseBody() diff --git a/Fuyu.Platform.Server/Behaviours/EFT/GameProfileList.cs b/Fuyu.Platform.Server/Behaviours/EFT/GameProfileList.cs index a609c61..3556caf 100644 --- a/Fuyu.Platform.Server/Behaviours/EFT/GameProfileList.cs +++ b/Fuyu.Platform.Server/Behaviours/EFT/GameProfileList.cs @@ -17,7 +17,9 @@ public override void Run(HttpContext context) var sessionId = context.GetSessionId(); var account = FuyuDatabase.Accounts.GetAccount(sessionId); - // TODO: PVP-PVE STATE DETECTION + // TODO: + // * PVP-PVE state detection + // -- seionmoya, 2024/08/28 var pve = account.EftSave.PvE; Profile[] profiles = pve.ShouldWipe ? [] diff --git a/Fuyu.Platform.Server/Behaviours/EFT/GameProfileNicknameValidate.cs b/Fuyu.Platform.Server/Behaviours/EFT/GameProfileNicknameValidate.cs index f5658d4..4c10c72 100644 --- a/Fuyu.Platform.Server/Behaviours/EFT/GameProfileNicknameValidate.cs +++ b/Fuyu.Platform.Server/Behaviours/EFT/GameProfileNicknameValidate.cs @@ -15,7 +15,9 @@ public override void Run(HttpContext context) { var request = context.GetJson(); - // TODO: validate nickname usage + // TODO: + // * validate nickname usage + // -- seionmoya, 2024/08/28 var response = new ResponseBody() { diff --git a/Fuyu.Platform.Server/Behaviours/EFT/NotifierChannelCreate.cs b/Fuyu.Platform.Server/Behaviours/EFT/NotifierChannelCreate.cs index e0fffc6..135352d 100644 --- a/Fuyu.Platform.Server/Behaviours/EFT/NotifierChannelCreate.cs +++ b/Fuyu.Platform.Server/Behaviours/EFT/NotifierChannelCreate.cs @@ -21,7 +21,7 @@ public override void Run(HttpContext context) server = "localhost:8000", channel_id = channelId, url = string.Empty, - notifierServer = $"http://localhost:8000/push/notifier/get/{channelId}", + notifierServer = $"http://localhost:8001/push/notifier/get/{channelId}", ws = $"ws://localhost:8000/push/notifier/getwebsocket/{channelId}" } }; diff --git a/Fuyu.Platform.Server/Behaviours/EFT/ProfileStatus.cs b/Fuyu.Platform.Server/Behaviours/EFT/ProfileStatus.cs index a30335d..3b22ed6 100644 --- a/Fuyu.Platform.Server/Behaviours/EFT/ProfileStatus.cs +++ b/Fuyu.Platform.Server/Behaviours/EFT/ProfileStatus.cs @@ -17,7 +17,9 @@ public override void Run(HttpContext context) var sessionId = context.GetSessionId(); var account = FuyuDatabase.Accounts.GetAccount(sessionId); - // TODO: PVP-PVE STATE DETECTION + // TODO: + // * PVP-PVE state detection + // -- seionmoya, 2024/08/28 var response = new ResponseBody() { diff --git a/Fuyu.Platform.Server/Behaviours/Fuyu/AccountLogin.cs b/Fuyu.Platform.Server/Behaviours/Fuyu/AccountLogin.cs new file mode 100644 index 0000000..463fc68 --- /dev/null +++ b/Fuyu.Platform.Server/Behaviours/Fuyu/AccountLogin.cs @@ -0,0 +1,27 @@ +using Fuyu.Platform.Common.Models.Fuyu.Requests; +using Fuyu.Platform.Common.Models.Fuyu.Responses; +using Fuyu.Platform.Common.Networking; +using Fuyu.Platform.Common.Serialization; +using Fuyu.Platform.Server.Services.Fuyu; + +namespace Fuyu.Platform.Server.Behaviours.EFT +{ + public class AccountLogin : HttpBehaviour + { + public AccountLogin() : base("/account/login") + { + } + + public override void Run(HttpContext context) + { + var request = context.GetJson(); + var result = AccountService.LoginAccount(request.Username, request.Password); + var response = new AccountLoginResponse() + { + SessionId = result + }; + + SendJson(context, Json.Stringify(response)); + } + } +} \ No newline at end of file diff --git a/Fuyu.Platform.Server/Behaviours/Fuyu/AccountRegister.cs b/Fuyu.Platform.Server/Behaviours/Fuyu/AccountRegister.cs new file mode 100644 index 0000000..0832520 --- /dev/null +++ b/Fuyu.Platform.Server/Behaviours/Fuyu/AccountRegister.cs @@ -0,0 +1,27 @@ +using Fuyu.Platform.Common.Models.Fuyu.Requests; +using Fuyu.Platform.Common.Models.Fuyu.Responses; +using Fuyu.Platform.Common.Networking; +using Fuyu.Platform.Common.Serialization; +using Fuyu.Platform.Server.Services.Fuyu; + +namespace Fuyu.Platform.Server.Behaviours.EFT +{ + public class AccountRegister : HttpBehaviour + { + public AccountRegister() : base("/account/register") + { + } + + public override void Run(HttpContext context) + { + var request = context.GetJson(); + var result = AccountService.RegisterAccount(request.Username, request.Password, request.Edition); + var response = new AccountRegisterResponse() + { + Status = result + }; + + SendJson(context, Json.Stringify(response)); + } + } +} \ No newline at end of file diff --git a/Fuyu.Platform.Server/Databases/Fuyu/AccountTable.cs b/Fuyu.Platform.Server/Databases/Fuyu/AccountTable.cs index 58fe3c4..4299b6d 100644 --- a/Fuyu.Platform.Server/Databases/Fuyu/AccountTable.cs +++ b/Fuyu.Platform.Server/Databases/Fuyu/AccountTable.cs @@ -1,6 +1,8 @@ +using System; using System.Collections.Generic; -using Fuyu.Platform.Common.Models.Fuyu; -using Fuyu.Platform.Common.Models.Fuyu.Savegame; +using Fuyu.Platform.Common.IO; +using Fuyu.Platform.Common.Models.Fuyu.Accounts; +using Fuyu.Platform.Common.Serialization; namespace Fuyu.Platform.Server.Databases.Fuyu { @@ -10,12 +12,14 @@ static AccountTable() { _accountsLock = new object(); _sessionsLock = new object(); + _pathLock = new object(); } public AccountTable() { - _accounts = new Dictionary(); - _sessions = new Dictionary(); + _path = "./fuyu/accounts/"; + _accounts = []; + _sessions = []; } public void Load() @@ -24,41 +28,61 @@ public void Load() LoadSessions(); } +#region path + // TODO: + // * move to a config system + // -- seionmoya, 2024/09/02 + private string _path; + private static readonly object _pathLock; + + public string GetPath() + { + return _path; + } + + public void SetPath(string path) + { + lock (_pathLock) + { + _path = path; + } + } +#endregion + #region Accounts -// aid account - private readonly Dictionary _accounts; + // NOTE: rationale for using List over Dictionary + // is the accountId is already stored in the Account so having to + // sync both the Account.Id and dictionary is a bit annoying, and + // a dictionary loops over all keys anyways (unless using + // TryGetValue() but that uses 'out' which I want to avoid). + // -- seionmoya, 2024/09/02 + + private readonly List _accounts; private static readonly object _accountsLock; + // TODO: + // * separate database from loading functionality + // -- seionmoya, 2024/09/02 private void LoadAccounts() { - var account = new Account() + if (!VFS.DirectoryExists(_path)) { - Username = "Senko-san", - Password = string.Empty, - EftSave = new EftSave() - { - Edition = "Unheard", - PvE = new EftProfile() - { - Savage = default, - Pmc = default, - Suites = [], - ShouldWipe = true - }, - PvP = new EftProfile() - { - Savage = default, - Pmc = default, - Suites = [], - ShouldWipe = true - } - } - }; + VFS.CreateDirectory(_path); + } - AddAccount(1, account); + var files = VFS.GetFiles(_path); + + foreach (var filepath in files) + { + var json = VFS.ReadTextFile(filepath); + var account = Json.Parse(json); + AddAccount(account); + + Terminal.WriteLine($"Loaded account {account.Id}"); + } } - public Dictionary GetAccounts() + public List GetAccounts() { return _accounts; } @@ -71,31 +95,67 @@ public Account GetAccount(string sessionId) public Account GetAccount(int accountId) { - return _accounts[accountId]; + foreach (var entry in _accounts) + { + if (entry.Id == accountId) + { + return entry; + } + } + + throw new Exception($"Account with {accountId} does not exist."); } public void SetAccount(int accountId, Account account) { - lock (_accountsLock) + for (var i = 0; i < _accounts.Count; ++i) { - _accounts[accountId] = account; + if (_accounts[i].Id == accountId) + { + lock (_accountsLock) + { + _accounts[i] = account; + } + + return; + } } + + throw new Exception($"Account with {accountId} does not exist."); } - public void AddAccount(int accountId, Account account) + public void AddAccount(Account account) { + foreach (var entry in _accounts) + { + if (entry.Id == account.Id) + { + _accounts.Remove(entry); + } + } + lock (_accountsLock) { - _accounts.Add(accountId, account); + _accounts.Add(account); } } public void RemoveAccount(int accountId) { - lock (_accountsLock) + foreach (var entry in _accounts) { - _accounts.Remove(accountId); + if (entry.Id == accountId) + { + lock (_accountsLock) + { + _accounts.Remove(entry); + } + + return; + } } + + throw new Exception($"Account with {accountId} does not exist."); } #endregion @@ -106,16 +166,28 @@ public void RemoveAccount(int accountId) public void LoadSessions() { - AddSession("test", 1); + // intentionally empty + // sessions are created when users are logged in successfully + // -- seionmoya, 2024/09/02 } public int GetSession(string sessionId) { + if (!_sessions.ContainsKey(sessionId)) + { + throw new Exception($"Session {sessionId} does not exist."); + } + return _sessions[sessionId]; } public void SetSession(string sessionId, int accountId) { + if (!_sessions.ContainsKey(sessionId)) + { + throw new Exception($"Session {sessionId} does not exist."); + } + lock (_sessionsLock) { _sessions[sessionId] = accountId; @@ -124,14 +196,29 @@ public void SetSession(string sessionId, int accountId) public void AddSession(string sessionId, int accountId) { - lock (_sessionsLock) + if (_sessions.ContainsKey(sessionId)) { - _sessions.Add(sessionId, accountId); + lock (_sessionsLock) + { + _sessions[sessionId] = accountId; + } + } + else + { + lock (_sessionsLock) + { + _sessions.Add(sessionId, accountId); + } } } public void RemoveSession(string sessionId) { + if (!_sessions.ContainsKey(sessionId)) + { + throw new Exception($"Session {sessionId} does not exist."); + } + lock (_sessionsLock) { _sessions.Remove(sessionId); diff --git a/Fuyu.Platform.Server/ServerManager.cs b/Fuyu.Platform.Server/ServerManager.cs index c4c038a..e1af4d9 100644 --- a/Fuyu.Platform.Server/ServerManager.cs +++ b/Fuyu.Platform.Server/ServerManager.cs @@ -11,7 +11,8 @@ public static class ServerManager static ServerManager() { _servers = [ - new EftServer() + new FuyuServer(), + new EftMainServer() ]; } diff --git a/Fuyu.Platform.Server/Servers/MainServer.cs b/Fuyu.Platform.Server/Servers/EftMainServer.cs similarity index 95% rename from Fuyu.Platform.Server/Servers/MainServer.cs rename to Fuyu.Platform.Server/Servers/EftMainServer.cs index 1a48240..80e9c0f 100644 --- a/Fuyu.Platform.Server/Servers/MainServer.cs +++ b/Fuyu.Platform.Server/Servers/EftMainServer.cs @@ -3,9 +3,9 @@ namespace Fuyu.Platform.Server.Servers { - public class EftServer : HttpServer + public class EftMainServer : HttpServer { - public EftServer() : base("eft-main", "http://localhost:8000") + public EftMainServer() : base("eft-main", "http://localhost:8001") { } diff --git a/Fuyu.Platform.Server/Servers/FuyuServer.cs b/Fuyu.Platform.Server/Servers/FuyuServer.cs new file mode 100644 index 0000000..2172acc --- /dev/null +++ b/Fuyu.Platform.Server/Servers/FuyuServer.cs @@ -0,0 +1,18 @@ +using Fuyu.Platform.Common.Networking; +using Fuyu.Platform.Server.Behaviours.EFT; + +namespace Fuyu.Platform.Server.Servers +{ + public class FuyuServer : HttpServer + { + public FuyuServer() : base("fuyu", "http://localhost:8000") + { + } + + public override void RegisterServices() + { + AddHttpBehaviour(); + AddHttpBehaviour(); + } + } +} \ No newline at end of file diff --git a/Fuyu.Platform.Server/Services/BotService.cs b/Fuyu.Platform.Server/Services/EFT/BotService.cs similarity index 85% rename from Fuyu.Platform.Server/Services/BotService.cs rename to Fuyu.Platform.Server/Services/EFT/BotService.cs index 452e2f8..8b34a0b 100644 --- a/Fuyu.Platform.Server/Services/BotService.cs +++ b/Fuyu.Platform.Server/Services/EFT/BotService.cs @@ -1,7 +1,7 @@ using Fuyu.Platform.Common.Models.EFT.Profiles; using Fuyu.Platform.Common.Models.EFT.Profiles.Info; -namespace Fuyu.Platform.Server.Services +namespace Fuyu.Platform.Server.Services.EFT { public static class BotService { diff --git a/Fuyu.Platform.Server/Services/Fuyu/AccountService.cs b/Fuyu.Platform.Server/Services/Fuyu/AccountService.cs new file mode 100644 index 0000000..4b55f8d --- /dev/null +++ b/Fuyu.Platform.Server/Services/Fuyu/AccountService.cs @@ -0,0 +1,144 @@ +using System; +using System.Collections.Concurrent; +using System.Linq; +using System.Threading.Tasks; +using Fuyu.Platform.Common.IO; +using Fuyu.Platform.Common.Models.EFT.Common; +using Fuyu.Platform.Common.Models.Fuyu.Accounts; +using Fuyu.Platform.Common.Serialization; +using Fuyu.Platform.Server.Databases; + +namespace Fuyu.Platform.Server.Services.Fuyu +{ + public static class AccountService + { + // TODO: + // * account login state tracking + // -- seionmoya, 2024/09/02 + + public static int AccountExists(string username, string password) + { + var lowerUsername = username.ToLowerInvariant(); + var accounts = FuyuDatabase.Accounts.GetAccounts(); + var found = new ConcurrentBag(); + + Parallel.ForEach(accounts, account => + { + if (account.Username == lowerUsername && account.Password == password) + { + found.Add(account); + } + }); + + if (found.Count > 1) + { + throw new Exception($"Multiple accounts found with username {username}."); + } + + if (found.IsEmpty) + { + return -1; + } + + return found.First().Id; + } + + public static string LoginAccount(string username, string password) + { + var accountId = AccountExists(username, password); + + if (accountId != -1) + { + // NOTE: MongoId's are used internally, but EFT's launcher uses + // a different ID system (hwid+timestamp hash). Instead of + // fully mimicking this, I decided to generate a new MongoId + // for each login. + // -- seionmoya, 2024/09/02 + var sessionId = new MongoId().ToString(); + + FuyuDatabase.Accounts.AddSession(sessionId, accountId); + return sessionId.ToString(); + } + + return string.Empty; + } + + private static int GetNewAccountId() + { + var accounts = FuyuDatabase.Accounts.GetAccounts(); + + // using linq because sorting otherwise takes up too much code + var sorted = accounts.OrderBy(account => account.Id).ToArray(); + + // NOTE: I know multi-threading is overkill for most systems, but I + // want to keep in mind large server workloads + // -- seionmoya, 2024/09/02 + var found = new ConcurrentBag(); + + Parallel.For(0, sorted.Length, i => + { + if (sorted[i].Id != i) + { + found.Add(sorted[i].Id); + } + }); + + if (!found.IsEmpty) + { + // use gap entry + return found.First(); + } + else + { + // use new entry + return sorted.Length; + } + } + + public static ERegisterStatus RegisterAccount(string username, string password, string edition) + { + if (AccountExists(username, password) != -1) + { + return ERegisterStatus.AlreadyExists; + } + + var id = GetNewAccountId(); + var account = new Account() + { + Id = id, + Username = username.ToLowerInvariant(), + Password = password, + EftSave = new EftSave() + { + Edition = edition, + PvE = new EftProfile() + { + Savage = default, + Pmc = default, + Suites = [], + ShouldWipe = true + }, + PvP = new EftProfile() + { + Savage = default, + Pmc = default, + Suites = [], + ShouldWipe = true + } + } + }; + + FuyuDatabase.Accounts.AddAccount(account); + WriteAccountToDisk(account); + + return ERegisterStatus.Success; + } + + public static void WriteAccountToDisk(Account account) + { + VFS.WriteTextFile( + $"{FuyuDatabase.Accounts.GetPath()}{account.Id}.json", + Json.Stringify(account)); + } + } +} \ No newline at end of file diff --git a/Fuyu.Tests/EndToEnd/BackendTest.cs b/Fuyu.Tests/EndToEnd/BackendTest.cs index 929672b..476e6a4 100644 --- a/Fuyu.Tests/EndToEnd/BackendTest.cs +++ b/Fuyu.Tests/EndToEnd/BackendTest.cs @@ -8,30 +8,85 @@ using Fuyu.Platform.Common.Serialization; using Fuyu.Platform.Server; using Fuyu.Platform.Server.Databases; +using Fuyu.Platform.Server.Services.Fuyu; +using Fuyu.Platform.Server.Behaviours.EFT; +using Fuyu.Platform.Common.Models.Fuyu.Requests; namespace Fuyu.Tests.EndToEnd { [TestClass] public class BackendTest { - private static HttpClient _client; + private static HttpClient _fuyuClient; + private static HttpClient _eftMainClient; [AssemblyInitialize] public static void AssemblyInitialize(TestContext testContext) { - _client = new HttpClient("http://localhost:8000", "test"); - + // setup databases FuyuDatabase.Load(); EftDatabase.Load(); + // setup servers ServerManager.LoadAll(); ServerManager.StartAll(); + + // register fake account + AccountService.RegisterAccount("test-username", "test-password", "unheard"); + var sessionId = AccountService.LoginAccount("test-username", "test-password"); + + // create request clients + _fuyuClient = new HttpClient("http://localhost:8000"); + _eftMainClient = new HttpClient("http://localhost:8001", sessionId); + } + + [TestMethod] + public async Task TestAccountRegister() + { + // get request data + var request = new AccountRegisterRequest() + { + Username = "senko-san", + Password = "test-password", + Edition = "unheard" + }; + + // get request body + var json = Json.Stringify(request); + var body = Encoding.UTF8.GetBytes(json); + + // get response + var data = await _fuyuClient.PostAsync("/account/register", body); + var result = Encoding.UTF8.GetString(data); + + Assert.IsFalse(string.IsNullOrEmpty(result)); + } + + [TestMethod] + public async Task TestLoginCreate() + { + // get request data + var request = new AccountLoginRequest() + { + Username = "senko-san", + Password = "test-password" + }; + + // get request body + var json = Json.Stringify(request); + var body = Encoding.UTF8.GetBytes(json); + + // get response + var data = await _fuyuClient.PostAsync("/account/login", body); + var result = Encoding.UTF8.GetString(data); + + Assert.IsFalse(string.IsNullOrEmpty(result)); } [TestMethod] public async Task TestClientAccountCustomization() { - var data = await _client.GetAsync("/client/account/customization"); + var data = await _eftMainClient.GetAsync("/client/account/customization"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -40,7 +95,7 @@ public async Task TestClientAccountCustomization() [TestMethod] public async Task TestClientAchievementList() { - var data = await _client.GetAsync("/client/achievement/list"); + var data = await _eftMainClient.GetAsync("/client/achievement/list"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -49,7 +104,7 @@ public async Task TestClientAchievementList() [TestMethod] public async Task TestClientAchievementStatistic() { - var data = await _client.GetAsync("/client/achievement/statistic"); + var data = await _eftMainClient.GetAsync("/client/achievement/statistic"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -58,7 +113,7 @@ public async Task TestClientAchievementStatistic() [TestMethod] public async Task TestClientBuildList() { - var data = await _client.GetAsync("/client/builds/list"); + var data = await _eftMainClient.GetAsync("/client/builds/list"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -67,7 +122,7 @@ public async Task TestClientBuildList() [TestMethod] public async Task TestClientCheckVersion() { - var data = await _client.GetAsync("/client/checkVersion"); + var data = await _eftMainClient.GetAsync("/client/checkVersion"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -76,7 +131,7 @@ public async Task TestClientCheckVersion() [TestMethod] public async Task TestClientCustomization() { - var data = await _client.GetAsync("/client/customization"); + var data = await _eftMainClient.GetAsync("/client/customization"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -85,7 +140,7 @@ public async Task TestClientCustomization() [TestMethod] public async Task TestClientTradingCustomizationStorage() { - var data = await _client.GetAsync("/client/trading/customization/storage"); + var data = await _eftMainClient.GetAsync("/client/trading/customization/storage"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -94,7 +149,7 @@ public async Task TestClientTradingCustomizationStorage() [TestMethod] public async Task TestClientFriendList() { - var data = await _client.GetAsync("/client/friend/list"); + var data = await _eftMainClient.GetAsync("/client/friend/list"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -103,7 +158,7 @@ public async Task TestClientFriendList() [TestMethod] public async Task TestClientFriendRequestListInbox() { - var data = await _client.GetAsync("/client/friend/request/list/inbox"); + var data = await _eftMainClient.GetAsync("/client/friend/request/list/inbox"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -112,7 +167,7 @@ public async Task TestClientFriendRequestListInbox() [TestMethod] public async Task TestClientFriendRequestListOutbox() { - var data = await _client.GetAsync("/client/friend/request/list/outbox"); + var data = await _eftMainClient.GetAsync("/client/friend/request/list/outbox"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -139,7 +194,7 @@ public async Task TestClientGameBotGenerate() var body = Encoding.UTF8.GetBytes(json); // get response - var data = await _client.PostAsync("/client/game/bot/generate", body); + var data = await _eftMainClient.PostAsync("/client/game/bot/generate", body); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -148,7 +203,7 @@ public async Task TestClientGameBotGenerate() [TestMethod] public async Task TestClientGameConfig() { - var data = await _client.GetAsync("/client/game/config"); + var data = await _eftMainClient.GetAsync("/client/game/config"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -157,7 +212,7 @@ public async Task TestClientGameConfig() [TestMethod] public async Task TestClientGameKeepalive() { - var data = await _client.GetAsync("/client/game/keepalive"); + var data = await _eftMainClient.GetAsync("/client/game/keepalive"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -166,7 +221,7 @@ public async Task TestClientGameKeepalive() [TestMethod] public async Task TestClientLogout() { - var data = await _client.GetAsync("/client/game/logout"); + var data = await _eftMainClient.GetAsync("/client/game/logout"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -175,7 +230,7 @@ public async Task TestClientLogout() [TestMethod] public async Task TestClientGameMode() { - var data = await _client.GetAsync("/client/game/mode"); + var data = await _eftMainClient.GetAsync("/client/game/mode"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -198,7 +253,7 @@ public async Task TestClientGameProfileCreate() var body = Encoding.UTF8.GetBytes(json); // get response - var data = await _client.PostAsync("/client/game/profile/create", body); + var data = await _eftMainClient.PostAsync("/client/game/profile/create", body); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -207,7 +262,7 @@ public async Task TestClientGameProfileCreate() [TestMethod] public async Task TestClientGameProfileList() { - var data = await _client.GetAsync("/client/game/profile/list"); + var data = await _eftMainClient.GetAsync("/client/game/profile/list"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -216,7 +271,7 @@ public async Task TestClientGameProfileList() [TestMethod] public async Task TestClientGameProfileNicknameReserved() { - var data = await _client.GetAsync("/client/game/profile/nickname/reserved"); + var data = await _eftMainClient.GetAsync("/client/game/profile/nickname/reserved"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -236,7 +291,7 @@ public async Task TestClientGameProfileNicknameValidate() var body = Encoding.UTF8.GetBytes(json); // get response - var data = await _client.PostAsync("/client/game/profile/nickname/validate", body); + var data = await _eftMainClient.PostAsync("/client/game/profile/nickname/validate", body); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -245,7 +300,7 @@ public async Task TestClientGameProfileNicknameValidate() [TestMethod] public async Task TestClientGameProfileSelect() { - var data = await _client.GetAsync("/client/game/profile/select"); + var data = await _eftMainClient.GetAsync("/client/game/profile/select"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -254,7 +309,7 @@ public async Task TestClientGameProfileSelect() [TestMethod] public async Task TestClientGameStart() { - var data = await _client.GetAsync("/client/game/start"); + var data = await _eftMainClient.GetAsync("/client/game/start"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -263,7 +318,7 @@ public async Task TestClientGameStart() [TestMethod] public async Task TestClientGameVersionValidate() { - var data = await _client.GetAsync("/client/game/version/validate"); + var data = await _eftMainClient.GetAsync("/client/game/version/validate"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -272,7 +327,7 @@ public async Task TestClientGameVersionValidate() [TestMethod] public async Task TestClientGetMetricsConfig() { - var data = await _client.GetAsync("/client/getMetricsConfig"); + var data = await _eftMainClient.GetAsync("/client/getMetricsConfig"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -281,7 +336,7 @@ public async Task TestClientGetMetricsConfig() [TestMethod] public async Task TestClientGlobals() { - var data = await _client.GetAsync("/client/globals"); + var data = await _eftMainClient.GetAsync("/client/globals"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -290,7 +345,7 @@ public async Task TestClientGlobals() [TestMethod] public async Task TestClientHandbookTemplates() { - var data = await _client.GetAsync("/client/handbook/templates"); + var data = await _eftMainClient.GetAsync("/client/handbook/templates"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -299,7 +354,7 @@ public async Task TestClientHandbookTemplates() [TestMethod] public async Task TestClientHideoutAreas() { - var data = await _client.GetAsync("/client/hideout/areas"); + var data = await _eftMainClient.GetAsync("/client/hideout/areas"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -308,7 +363,7 @@ public async Task TestClientHideoutAreas() [TestMethod] public async Task TestClientProductionRecipes() { - var data = await _client.GetAsync("/client/hideout/production/recipes"); + var data = await _eftMainClient.GetAsync("/client/hideout/production/recipes"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -317,7 +372,7 @@ public async Task TestClientProductionRecipes() [TestMethod] public async Task TestClientHideoutQteList() { - var data = await _client.GetAsync("/client/hideout/qte/list"); + var data = await _eftMainClient.GetAsync("/client/hideout/qte/list"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -326,7 +381,7 @@ public async Task TestClientHideoutQteList() [TestMethod] public async Task TestClientHideoutSettings() { - var data = await _client.GetAsync("/client/hideout/settings"); + var data = await _eftMainClient.GetAsync("/client/hideout/settings"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -335,7 +390,7 @@ public async Task TestClientHideoutSettings() [TestMethod] public async Task TestClientItems() { - var data = await _client.GetAsync("/client/items"); + var data = await _eftMainClient.GetAsync("/client/items"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -344,7 +399,7 @@ public async Task TestClientItems() [TestMethod] public async Task TestClientLanguages() { - var data = await _client.GetAsync("/client/languages"); + var data = await _eftMainClient.GetAsync("/client/languages"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -353,7 +408,7 @@ public async Task TestClientLanguages() [TestMethod] public async Task TestClientLocaleCh() { - var data = await _client.GetAsync("/client/locale/ch"); + var data = await _eftMainClient.GetAsync("/client/locale/ch"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -362,7 +417,7 @@ public async Task TestClientLocaleCh() [TestMethod] public async Task TestClientLocaleCz() { - var data = await _client.GetAsync("/client/locale/cz"); + var data = await _eftMainClient.GetAsync("/client/locale/cz"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -371,7 +426,7 @@ public async Task TestClientLocaleCz() [TestMethod] public async Task TestClientLocaleEn() { - var data = await _client.GetAsync("/client/locale/en"); + var data = await _eftMainClient.GetAsync("/client/locale/en"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -380,7 +435,7 @@ public async Task TestClientLocaleEn() [TestMethod] public async Task TestClientLocaleEs() { - var data = await _client.GetAsync("/client/locale/es"); + var data = await _eftMainClient.GetAsync("/client/locale/es"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -389,7 +444,7 @@ public async Task TestClientLocaleEs() [TestMethod] public async Task TestClientLocaleEsMx() { - var data = await _client.GetAsync("/client/locale/es-mx"); + var data = await _eftMainClient.GetAsync("/client/locale/es-mx"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -398,7 +453,7 @@ public async Task TestClientLocaleEsMx() [TestMethod] public async Task TestClientLocaleFr() { - var data = await _client.GetAsync("/client/locale/fr"); + var data = await _eftMainClient.GetAsync("/client/locale/fr"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -407,7 +462,7 @@ public async Task TestClientLocaleFr() [TestMethod] public async Task TestClientLocaleGe() { - var data = await _client.GetAsync("/client/locale/ge"); + var data = await _eftMainClient.GetAsync("/client/locale/ge"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -416,7 +471,7 @@ public async Task TestClientLocaleGe() [TestMethod] public async Task TestClientLocaleHu() { - var data = await _client.GetAsync("/client/locale/hu"); + var data = await _eftMainClient.GetAsync("/client/locale/hu"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -425,7 +480,7 @@ public async Task TestClientLocaleHu() [TestMethod] public async Task TestClientLocaleIt() { - var data = await _client.GetAsync("/client/locale/it"); + var data = await _eftMainClient.GetAsync("/client/locale/it"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -434,7 +489,7 @@ public async Task TestClientLocaleIt() [TestMethod] public async Task TestClientLocaleJp() { - var data = await _client.GetAsync("/client/locale/jp"); + var data = await _eftMainClient.GetAsync("/client/locale/jp"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -443,7 +498,7 @@ public async Task TestClientLocaleJp() [TestMethod] public async Task TestClientLocaleKr() { - var data = await _client.GetAsync("/client/locale/kr"); + var data = await _eftMainClient.GetAsync("/client/locale/kr"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -452,7 +507,7 @@ public async Task TestClientLocaleKr() [TestMethod] public async Task TestClientLocalePo() { - var data = await _client.GetAsync("/client/locale/po"); + var data = await _eftMainClient.GetAsync("/client/locale/po"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -461,7 +516,7 @@ public async Task TestClientLocalePo() [TestMethod] public async Task TestClientLocalePl() { - var data = await _client.GetAsync("/client/locale/pl"); + var data = await _eftMainClient.GetAsync("/client/locale/pl"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -470,7 +525,7 @@ public async Task TestClientLocalePl() [TestMethod] public async Task TestClientLocaleRo() { - var data = await _client.GetAsync("/client/locale/ro"); + var data = await _eftMainClient.GetAsync("/client/locale/ro"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -479,7 +534,7 @@ public async Task TestClientLocaleRo() [TestMethod] public async Task TestClientLocaleRu() { - var data = await _client.GetAsync("/client/locale/ru"); + var data = await _eftMainClient.GetAsync("/client/locale/ru"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -488,7 +543,7 @@ public async Task TestClientLocaleRu() [TestMethod] public async Task TestClientLocaleSk() { - var data = await _client.GetAsync("/client/locale/sk"); + var data = await _eftMainClient.GetAsync("/client/locale/sk"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -497,7 +552,7 @@ public async Task TestClientLocaleSk() [TestMethod] public async Task TestClientLocaleTu() { - var data = await _client.GetAsync("/client/locale/tu"); + var data = await _eftMainClient.GetAsync("/client/locale/tu"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -506,7 +561,7 @@ public async Task TestClientLocaleTu() [TestMethod] public async Task TestClientLocalGameWeather() { - var data = await _client.GetAsync("/client/localGame/weather"); + var data = await _eftMainClient.GetAsync("/client/localGame/weather"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -515,7 +570,7 @@ public async Task TestClientLocalGameWeather() [TestMethod] public async Task TestClientLocations() { - var data = await _client.GetAsync("/client/locations"); + var data = await _eftMainClient.GetAsync("/client/locations"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -524,7 +579,7 @@ public async Task TestClientLocations() [TestMethod] public async Task TestClientMailDialogList() { - var data = await _client.GetAsync("/client/mail/dialog/list"); + var data = await _eftMainClient.GetAsync("/client/mail/dialog/list"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -533,7 +588,7 @@ public async Task TestClientMailDialogList() [TestMethod] public async Task TestClientMatchGroupCurrent() { - var data = await _client.GetAsync("/client/match/group/current"); + var data = await _eftMainClient.GetAsync("/client/match/group/current"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -542,7 +597,7 @@ public async Task TestClientMatchGroupCurrent() [TestMethod] public async Task TestClientMatchGroupExitFromMenu() { - var data = await _client.GetAsync("/client/match/group/exit_from_menu"); + var data = await _eftMainClient.GetAsync("/client/match/group/exit_from_menu"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -551,7 +606,7 @@ public async Task TestClientMatchGroupExitFromMenu() [TestMethod] public async Task TestClientMatchGroupInviteCancelAll() { - var data = await _client.GetAsync("/client/match/group/invite/cancel-all"); + var data = await _eftMainClient.GetAsync("/client/match/group/invite/cancel-all"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -560,7 +615,7 @@ public async Task TestClientMatchGroupInviteCancelAll() [TestMethod] public async Task TestClientMatchLocalEnd() { - var data = await _client.GetAsync("/client/match/local/end"); + var data = await _eftMainClient.GetAsync("/client/match/local/end"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -583,7 +638,7 @@ public async Task TestClientMatchLocalStart() var body = Encoding.UTF8.GetBytes(json); // get response - var data = await _client.PostAsync("/client/match/local/start", body); + var data = await _eftMainClient.PostAsync("/client/match/local/start", body); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -592,7 +647,7 @@ public async Task TestClientMatchLocalStart() [TestMethod] public async Task TestClientMenuLocaleCh() { - var data = await _client.GetAsync("/client/menu/locale/ch"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/ch"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -601,7 +656,7 @@ public async Task TestClientMenuLocaleCh() [TestMethod] public async Task TestClientMenuLocaleCz() { - var data = await _client.GetAsync("/client/menu/locale/cz"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/cz"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -610,7 +665,7 @@ public async Task TestClientMenuLocaleCz() [TestMethod] public async Task TestClientMenuLocaleEn() { - var data = await _client.GetAsync("/client/menu/locale/en"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/en"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -619,7 +674,7 @@ public async Task TestClientMenuLocaleEn() [TestMethod] public async Task TestClientMenuLocaleEs() { - var data = await _client.GetAsync("/client/menu/locale/es"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/es"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -628,7 +683,7 @@ public async Task TestClientMenuLocaleEs() [TestMethod] public async Task TestClientMenuLocaleEsMx() { - var data = await _client.GetAsync("/client/menu/locale/es-mx"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/es-mx"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -637,7 +692,7 @@ public async Task TestClientMenuLocaleEsMx() [TestMethod] public async Task TestClientMenuLocaleFr() { - var data = await _client.GetAsync("/client/menu/locale/fr"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/fr"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -646,7 +701,7 @@ public async Task TestClientMenuLocaleFr() [TestMethod] public async Task TestClientMenuLocaleGe() { - var data = await _client.GetAsync("/client/menu/locale/ge"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/ge"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -655,7 +710,7 @@ public async Task TestClientMenuLocaleGe() [TestMethod] public async Task TestClientMenuLocaleHu() { - var data = await _client.GetAsync("/client/menu/locale/hu"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/hu"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -664,7 +719,7 @@ public async Task TestClientMenuLocaleHu() [TestMethod] public async Task TestClientMenuLocaleIt() { - var data = await _client.GetAsync("/client/menu/locale/it"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/it"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -673,7 +728,7 @@ public async Task TestClientMenuLocaleIt() [TestMethod] public async Task TestClientMenuLocaleJp() { - var data = await _client.GetAsync("/client/menu/locale/jp"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/jp"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -682,7 +737,7 @@ public async Task TestClientMenuLocaleJp() [TestMethod] public async Task TestClientMenuLocaleKr() { - var data = await _client.GetAsync("/client/menu/locale/kr"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/kr"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -691,7 +746,7 @@ public async Task TestClientMenuLocaleKr() [TestMethod] public async Task TestClientMenuLocalePo() { - var data = await _client.GetAsync("/client/menu/locale/po"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/po"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -700,7 +755,7 @@ public async Task TestClientMenuLocalePo() [TestMethod] public async Task TestClientMenuLocalePl() { - var data = await _client.GetAsync("/client/menu/locale/pl"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/pl"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -709,7 +764,7 @@ public async Task TestClientMenuLocalePl() [TestMethod] public async Task TestClientMenuLocaleRo() { - var data = await _client.GetAsync("/client/menu/locale/ro"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/ro"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -718,7 +773,7 @@ public async Task TestClientMenuLocaleRo() [TestMethod] public async Task TestClientMenuLocaleRu() { - var data = await _client.GetAsync("/client/menu/locale/ru"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/ru"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -727,7 +782,7 @@ public async Task TestClientMenuLocaleRu() [TestMethod] public async Task TestClientMenuLocaleSk() { - var data = await _client.GetAsync("/client/menu/locale/sk"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/sk"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -736,7 +791,7 @@ public async Task TestClientMenuLocaleSk() [TestMethod] public async Task TestClientMenuLocaleTu() { - var data = await _client.GetAsync("/client/menu/locale/tu"); + var data = await _eftMainClient.GetAsync("/client/menu/locale/tu"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -745,7 +800,7 @@ public async Task TestClientMenuLocaleTu() [TestMethod] public async Task TestNotifierChannelCreate() { - var data = await _client.GetAsync("/client/notifier/channel/create"); + var data = await _eftMainClient.GetAsync("/client/notifier/channel/create"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -754,7 +809,7 @@ public async Task TestNotifierChannelCreate() [TestMethod] public async Task TestProfileStatus() { - var data = await _client.GetAsync("/client/profile/status"); + var data = await _eftMainClient.GetAsync("/client/profile/status"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -763,7 +818,7 @@ public async Task TestProfileStatus() [TestMethod] public async Task TestPutMetrics() { - var data = await _client.GetAsync("/client/putMetrics"); + var data = await _eftMainClient.GetAsync("/client/putMetrics"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -772,7 +827,7 @@ public async Task TestPutMetrics() [TestMethod] public async Task TestProfileSettings() { - var data = await _client.GetAsync("/client/profile/settings"); + var data = await _eftMainClient.GetAsync("/client/profile/settings"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -781,7 +836,7 @@ public async Task TestProfileSettings() [TestMethod] public async Task TestClientQuestList() { - var data = await _client.GetAsync("/client/quest/list"); + var data = await _eftMainClient.GetAsync("/client/quest/list"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -790,7 +845,7 @@ public async Task TestClientQuestList() [TestMethod] public async Task TestClientRaidConfiguration() { - var data = await _client.GetAsync("/client/raid/configuration"); + var data = await _eftMainClient.GetAsync("/client/raid/configuration"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -799,7 +854,7 @@ public async Task TestClientRaidConfiguration() [TestMethod] public async Task TestClientRepeatableQuestActivityPeriods() { - var data = await _client.GetAsync("/client/repeatalbeQuests/activityPeriods"); + var data = await _eftMainClient.GetAsync("/client/repeatalbeQuests/activityPeriods"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -808,7 +863,7 @@ public async Task TestClientRepeatableQuestActivityPeriods() [TestMethod] public async Task TestClientServerList() { - var data = await _client.GetAsync("/client/server/list"); + var data = await _eftMainClient.GetAsync("/client/server/list"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -817,7 +872,7 @@ public async Task TestClientServerList() [TestMethod] public async Task TestClientSettings() { - var data = await _client.GetAsync("/client/settings"); + var data = await _eftMainClient.GetAsync("/client/settings"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -826,7 +881,7 @@ public async Task TestClientSettings() [TestMethod] public async Task TestClientSurvey() { - var data = await _client.GetAsync("/client/survey"); + var data = await _eftMainClient.GetAsync("/client/survey"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -835,7 +890,7 @@ public async Task TestClientSurvey() [TestMethod] public async Task TestClientTradingApiTraderSettings() { - var data = await _client.GetAsync("/client/trading/api/traderSettings"); + var data = await _eftMainClient.GetAsync("/client/trading/api/traderSettings"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result)); @@ -844,7 +899,7 @@ public async Task TestClientTradingApiTraderSettings() [TestMethod] public async Task TestClientWeather() { - var data = await _client.GetAsync("/client/weather"); + var data = await _eftMainClient.GetAsync("/client/weather"); var result = Encoding.UTF8.GetString(data); Assert.IsFalse(string.IsNullOrEmpty(result));