From 5f8ed9f4d17ae8652e20feddc24c8ea4aafff50e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=99=E7=A9=8F=E9=9D=84?= <170472707+seionmoya@users.noreply.github.com> Date: Thu, 19 Sep 2024 01:12:30 +0200 Subject: [PATCH 1/4] Apply http changes --- .../EndToEnd/BackendTest.cs | 2 +- Fuyu.Backend.Core/Services/RequestService.cs | 16 +- Fuyu.Common/Networking/EftHttpClient.cs | 47 +++ Fuyu.Common/Networking/HttpClient.cs | 97 ++--- Fuyu.Common/Networking/HttpResponse.cs | 15 + Fuyu.Launcher.Core/Services/RequestService.cs | 16 +- .../EndToEnd/BackendTest.cs | 342 +++++++++--------- 7 files changed, 300 insertions(+), 235 deletions(-) create mode 100644 Fuyu.Common/Networking/EftHttpClient.cs create mode 100644 Fuyu.Common/Networking/HttpResponse.cs diff --git a/Backup/Fuyu.Tests.Server.Arena/EndToEnd/BackendTest.cs b/Backup/Fuyu.Tests.Server.Arena/EndToEnd/BackendTest.cs index afe24a8..315aa32 100644 --- a/Backup/Fuyu.Tests.Server.Arena/EndToEnd/BackendTest.cs +++ b/Backup/Fuyu.Tests.Server.Arena/EndToEnd/BackendTest.cs @@ -19,7 +19,7 @@ public static void AssemblyInitialize(TestContext testContext) ArenaDatabase.Load(); // create request clients - _arenaMainClient = new HttpClient("http://localhost:8020"); + _arenaMainClient = new EftHttpClient("http://localhost:8020"); } } } \ No newline at end of file diff --git a/Fuyu.Backend.Core/Services/RequestService.cs b/Fuyu.Backend.Core/Services/RequestService.cs index c939902..b452762 100644 --- a/Fuyu.Backend.Core/Services/RequestService.cs +++ b/Fuyu.Backend.Core/Services/RequestService.cs @@ -18,9 +18,9 @@ static RequestService() // TODO: // * get address from config // -- seionmoya, 2024/09/08 - _httpClients.Add("fuyu", new HttpClient("http://localhost:8000", string.Empty)); - _httpClients.Add("eft", new HttpClient("http://localhost:8010", string.Empty)); - _httpClients.Add("arena", new HttpClient("http://localhost:8020", string.Empty)); + _httpClients.Add("fuyu", new HttpClient("http://localhost:8000")); + _httpClients.Add("eft", new HttpClient("http://localhost:8010")); + _httpClients.Add("arena", new HttpClient("http://localhost:8020")); } private static T2 HttpPost(string id, string path, T1 request) @@ -30,16 +30,16 @@ private static T2 HttpPost(string id, string path, T1 request) var requestJson = Json.Stringify(request); var requestBytes = Encoding.UTF8.GetBytes(requestJson); - var responseBytes = httpc.Post(path, requestBytes); - var responseJson = Encoding.UTF8.GetString(responseBytes); - var response = Json.Parse(responseJson); + var response = httpc.Post(path, requestBytes); + var responseJson = Encoding.UTF8.GetString(response.Body); + var responseValue = Json.Parse(responseJson); - return response; + return responseValue; } public static void CreateSession(string id, string address, string sessionId) { - _httpClients.Set(id, new HttpClient(address, sessionId)); + _httpClients.Set(id, new EftHttpClient(address, sessionId)); } public static int RegisterGame(string game, string username, string edition) diff --git a/Fuyu.Common/Networking/EftHttpClient.cs b/Fuyu.Common/Networking/EftHttpClient.cs new file mode 100644 index 0000000..a7f1465 --- /dev/null +++ b/Fuyu.Common/Networking/EftHttpClient.cs @@ -0,0 +1,47 @@ +using System; +using System.Net.Http; +using Fuyu.Common.Compression; + +namespace Fuyu.Common.Networking +{ + public class EftHttpClient : HttpClient + { + public readonly string Cookie; + + public EftHttpClient(string address, string sessionId) : base(address) + { + Cookie = $"PHPSESSID={sessionId}"; + } + + protected override byte[] OnSendBody(byte[] body) + { + return Zlib.Compress(body, ZlibCompression.Level9); + } + + protected override byte[] OnReceiveBody(byte[] body) + { + if (Zlib.IsCompressed(body)) + { + body = Zlib.Decompress(body); + } + + return body; + } + + protected override HttpRequestMessage GetNewRequest(HttpMethod method, string path) + { + var request = new HttpRequestMessage() + { + Method = method, + RequestUri = new Uri(Address + path), + }; + + if (!string.IsNullOrWhiteSpace(Cookie)) + { + request.Headers.Add("Cookie", Cookie); + } + + return request; + } + } +} \ No newline at end of file diff --git a/Fuyu.Common/Networking/HttpClient.cs b/Fuyu.Common/Networking/HttpClient.cs index cdd9b49..d8449ad 100644 --- a/Fuyu.Common/Networking/HttpClient.cs +++ b/Fuyu.Common/Networking/HttpClient.cs @@ -1,9 +1,7 @@ using System; using System.IO; using System.Net.Http; -using System.Text; using System.Threading.Tasks; -using Fuyu.Common.Compression; namespace Fuyu.Common.Networking { @@ -13,13 +11,11 @@ public class HttpClient : IDisposable { protected System.Net.Http.HttpClient Httpv; protected string Address; - protected string Cookie; protected int Retries; - public HttpClient(string address, string sessionId = "", int retries = 3) + public HttpClient(string address, int retries = 3) { Address = address; - Cookie = $"PHPSESSID={sessionId}"; Retries = retries; var handler = new HttpClientHandler @@ -31,19 +27,26 @@ public HttpClient(string address, string sessionId = "", int retries = 3) Httpv = new System.Net.Http.HttpClient(handler); } - protected HttpRequestMessage GetNewRequest(HttpMethod method, string path) + protected virtual HttpRequestMessage GetNewRequest(HttpMethod method, string path) { return new HttpRequestMessage() { Method = method, - RequestUri = new Uri(Address + path), - Headers = { - { "Cookie", Cookie } - } + RequestUri = new Uri(Address + path) }; } - protected async Task SendAsync(HttpMethod method, string path, byte[] data, bool zipped = true) + protected virtual byte[] OnSendBody(byte[] body) + { + return body; + } + + protected virtual byte[] OnReceiveBody(byte[] body) + { + return body; + } + + protected async Task SendAsync(HttpMethod method, string path, byte[] data) { HttpResponseMessage response = null; @@ -52,11 +55,7 @@ protected async Task SendAsync(HttpMethod method, string path, byte[] da if (data != null) { // add payload to request - if (zipped) - { - data = Zlib.Compress(data, ZlibCompression.Level9); - } - + data = OnSendBody(data); request.Content = new ByteArrayContent(data); } @@ -70,32 +69,29 @@ protected async Task SendAsync(HttpMethod method, string path, byte[] da throw new Exception($"Code {response.StatusCode}"); } + byte[] body; + + // grap response payload using (var ms = new MemoryStream()) { using (var stream = await response.Content.ReadAsStreamAsync()) { - // grap response payload await stream.CopyToAsync(ms); - var body = ms.ToArray(); - - if (Zlib.IsCompressed(body)) - { - body = Zlib.Decompress(body); - } - - if (body == null) - { - // payload doesn't contains data - var code = response.StatusCode.ToString(); - body = Encoding.UTF8.GetBytes(code); - } - - return body; + body = ms.ToArray(); } } + + // handle middleware + body = OnReceiveBody(body); + + return new HttpResponse() + { + Status = (int)response.StatusCode, + Body = body + }; } - protected async Task SendWithRetriesAsync(HttpMethod method, string path, byte[] data, bool zipped = true) + protected async Task SendWithRetriesAsync(HttpMethod method, string path, byte[] data) { var error = new Exception("Internal error"); @@ -104,7 +100,7 @@ protected async Task SendWithRetriesAsync(HttpMethod method, string path { try { - return await SendAsync(method, path, data, zipped); + return await SendAsync(method, path, data); } catch (Exception ex) { @@ -115,36 +111,43 @@ protected async Task SendWithRetriesAsync(HttpMethod method, string path throw error; } - public async Task GetAsync(string path) + public async Task GetAsync(string path) { return await SendWithRetriesAsync(HttpMethod.Get, path, null); } - public byte[] Get(string path) + public HttpResponse Get(string path) { - return Task.Run(() => GetAsync(path)).Result; + return GetAsync(path) + .ConfigureAwait(false) + .GetAwaiter() + .GetResult(); } - public async Task PostAsync(string path, byte[] data, bool zipped = true) + public async Task PostAsync(string path, byte[] data) { - return await SendWithRetriesAsync(HttpMethod.Post, path, data, zipped); + return await SendWithRetriesAsync(HttpMethod.Post, path, data); } - public byte[] Post(string path, byte[] data, bool zipped = true) + public HttpResponse Post(string path, byte[] data) { - return Task.Run(() => PostAsync(path, data, zipped)).Result; + return PostAsync(path, data) + .ConfigureAwait(false) + .GetAwaiter() + .GetResult(); } - // NOTE: returns status code as bytes - public async Task PutAsync(string path, byte[] data, bool zipped = true) + public async Task PutAsync(string path, byte[] data) { - return await SendWithRetriesAsync(HttpMethod.Post, path, data, zipped); + return await SendWithRetriesAsync(HttpMethod.Put, path, data); } - // NOTE: returns status code as bytes - public byte[] Put(string path, byte[] data, bool zipped = true) + public HttpResponse Put(string path, byte[] data) { - return Task.Run(() => PutAsync(path, data, zipped)).Result; + return PutAsync(path, data) + .ConfigureAwait(false) + .GetAwaiter() + .GetResult(); } public void Dispose() diff --git a/Fuyu.Common/Networking/HttpResponse.cs b/Fuyu.Common/Networking/HttpResponse.cs new file mode 100644 index 0000000..e841fe3 --- /dev/null +++ b/Fuyu.Common/Networking/HttpResponse.cs @@ -0,0 +1,15 @@ +namespace Fuyu.Common.Networking +{ + public class HttpResponse + { + // TODO: + // * use enum instead + // -- seionmoya, 2024/09/19 + public int Status; + + // TODO: + // * use System.Memory instead + // -- seionmoya, 2024/09/19 + public byte[] Body; + } +} \ No newline at end of file diff --git a/Fuyu.Launcher.Core/Services/RequestService.cs b/Fuyu.Launcher.Core/Services/RequestService.cs index fb75da0..8f1ad21 100644 --- a/Fuyu.Launcher.Core/Services/RequestService.cs +++ b/Fuyu.Launcher.Core/Services/RequestService.cs @@ -19,9 +19,9 @@ static RequestService() { _httpClients = new ThreadDictionary(); - _httpClients.Add("fuyu", new HttpClient(SettingsService.FuyuAddress, string.Empty)); - _httpClients.Add("eft", new HttpClient(SettingsService.EftAddress, string.Empty)); - _httpClients.Add("arena", new HttpClient(SettingsService.ArenaAddress, string.Empty)); + _httpClients.Add("fuyu", new HttpClient(SettingsService.FuyuAddress)); + _httpClients.Add("eft", new HttpClient(SettingsService.EftAddress)); + _httpClients.Add("arena", new HttpClient(SettingsService.ArenaAddress)); } private static T2 HttpPost(string id, string path, T1 request) @@ -31,16 +31,16 @@ private static T2 HttpPost(string id, string path, T1 request) var requestJson = Json.Stringify(request); var requestBytes = Encoding.UTF8.GetBytes(requestJson); - var responseBytes = httpc.Post(path, requestBytes); - var responseJson = Encoding.UTF8.GetString(responseBytes); - var response = Json.Parse(responseJson); + var response = httpc.Post(path, requestBytes); + var responseJson = Encoding.UTF8.GetString(response.Body); + var responseValue = Json.Parse(responseJson); - return response; + return responseValue; } public static void CreateSession(string id, string address, string sessionId) { - _httpClients.Set(id, new HttpClient(address, sessionId)); + _httpClients.Set(id, new EftHttpClient(address, sessionId)); } public static ERegisterStatus RegisterAccount(string username, string password) diff --git a/Fuyu.Tests.Backend.EFT/EndToEnd/BackendTest.cs b/Fuyu.Tests.Backend.EFT/EndToEnd/BackendTest.cs index 4045c88..222e41c 100644 --- a/Fuyu.Tests.Backend.EFT/EndToEnd/BackendTest.cs +++ b/Fuyu.Tests.Backend.EFT/EndToEnd/BackendTest.cs @@ -78,14 +78,14 @@ public static void AssemblyInitialize(TestContext testContext) var eftSessionId = Fuyu.Backend.EFT.Services.AccountService.LoginAccount(eftAccountId); // create request clients - _eftMainClient = new HttpClient("http://localhost:8010", eftSessionId); + _eftMainClient = new EftHttpClient("http://localhost:8010", eftSessionId); } [TestMethod] public async Task TestClientAccountCustomization() { - var data = await _eftMainClient.GetAsync("/client/account/customization"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/account/customization"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -93,8 +93,8 @@ public async Task TestClientAccountCustomization() [TestMethod] public async Task TestClientAchievementList() { - var data = await _eftMainClient.GetAsync("/client/achievement/list"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/achievement/list"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -102,8 +102,8 @@ public async Task TestClientAchievementList() [TestMethod] public async Task TestClientAchievementStatistic() { - var data = await _eftMainClient.GetAsync("/client/achievement/statistic"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/achievement/statistic"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -111,8 +111,8 @@ public async Task TestClientAchievementStatistic() [TestMethod] public async Task TestClientBuildList() { - var data = await _eftMainClient.GetAsync("/client/builds/list"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/builds/list"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -120,8 +120,8 @@ public async Task TestClientBuildList() [TestMethod] public async Task TestClientCheckVersion() { - var data = await _eftMainClient.GetAsync("/client/checkVersion"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/checkVersion"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -129,8 +129,8 @@ public async Task TestClientCheckVersion() [TestMethod] public async Task TestClientCustomization() { - var data = await _eftMainClient.GetAsync("/client/customization"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/customization"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -138,8 +138,8 @@ public async Task TestClientCustomization() [TestMethod] public async Task TestClientTradingCustomizationStorage() { - var data = await _eftMainClient.GetAsync("/client/trading/customization/storage"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/trading/customization/storage"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -147,8 +147,8 @@ public async Task TestClientTradingCustomizationStorage() [TestMethod] public async Task TestClientFriendList() { - var data = await _eftMainClient.GetAsync("/client/friend/list"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/friend/list"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -156,8 +156,8 @@ public async Task TestClientFriendList() [TestMethod] public async Task TestClientFriendRequestListInbox() { - var data = await _eftMainClient.GetAsync("/client/friend/request/list/inbox"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/friend/request/list/inbox"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -165,8 +165,8 @@ public async Task TestClientFriendRequestListInbox() [TestMethod] public async Task TestClientFriendRequestListOutbox() { - var data = await _eftMainClient.GetAsync("/client/friend/request/list/outbox"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/friend/request/list/outbox"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -192,8 +192,8 @@ public async Task TestClientGameBotGenerate() var body = Encoding.UTF8.GetBytes(json); // get response - var data = await _eftMainClient.PostAsync("/client/game/bot/generate", body); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.PostAsync("/client/game/bot/generate", body); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -201,8 +201,8 @@ public async Task TestClientGameBotGenerate() [TestMethod] public async Task TestClientGameConfig() { - var data = await _eftMainClient.GetAsync("/client/game/config"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/game/config"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -210,8 +210,8 @@ public async Task TestClientGameConfig() [TestMethod] public async Task TestClientGameKeepalive() { - var data = await _eftMainClient.GetAsync("/client/game/keepalive"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/game/keepalive"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -219,8 +219,8 @@ public async Task TestClientGameKeepalive() [TestMethod] public async Task TestClientLogout() { - var data = await _eftMainClient.GetAsync("/client/game/logout"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/game/logout"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -228,8 +228,8 @@ public async Task TestClientLogout() [TestMethod] public async Task TestClientGameMode() { - var data = await _eftMainClient.GetAsync("/client/game/mode"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/game/mode"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -251,8 +251,8 @@ public async Task TestClientGameProfileCreate() var body = Encoding.UTF8.GetBytes(json); // get response - var data = await _eftMainClient.PostAsync("/client/game/profile/create", body); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.PostAsync("/client/game/profile/create", body); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -260,8 +260,8 @@ public async Task TestClientGameProfileCreate() [TestMethod] public async Task TestClientGameProfileList() { - var data = await _eftMainClient.GetAsync("/client/game/profile/list"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/game/profile/list"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -269,8 +269,8 @@ public async Task TestClientGameProfileList() [TestMethod] public async Task TestClientGameProfileNicknameReserved() { - var data = await _eftMainClient.GetAsync("/client/game/profile/nickname/reserved"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/game/profile/nickname/reserved"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -289,8 +289,8 @@ public async Task TestClientGameProfileNicknameValidate() var body = Encoding.UTF8.GetBytes(json); // get response - var data = await _eftMainClient.PostAsync("/client/game/profile/nickname/validate", body); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.PostAsync("/client/game/profile/nickname/validate", body); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -298,8 +298,8 @@ public async Task TestClientGameProfileNicknameValidate() [TestMethod] public async Task TestClientGameProfileSelect() { - var data = await _eftMainClient.GetAsync("/client/game/profile/select"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/game/profile/select"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -307,8 +307,8 @@ public async Task TestClientGameProfileSelect() [TestMethod] public async Task TestClientGameStart() { - var data = await _eftMainClient.GetAsync("/client/game/start"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/game/start"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -316,8 +316,8 @@ public async Task TestClientGameStart() [TestMethod] public async Task TestClientGameVersionValidate() { - var data = await _eftMainClient.GetAsync("/client/game/version/validate"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/game/version/validate"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -325,8 +325,8 @@ public async Task TestClientGameVersionValidate() [TestMethod] public async Task TestClientGetMetricsConfig() { - var data = await _eftMainClient.GetAsync("/client/getMetricsConfig"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/getMetricsConfig"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -334,8 +334,8 @@ public async Task TestClientGetMetricsConfig() [TestMethod] public async Task TestClientGlobals() { - var data = await _eftMainClient.GetAsync("/client/globals"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/globals"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -343,8 +343,8 @@ public async Task TestClientGlobals() [TestMethod] public async Task TestClientHandbookTemplates() { - var data = await _eftMainClient.GetAsync("/client/handbook/templates"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/handbook/templates"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -352,8 +352,8 @@ public async Task TestClientHandbookTemplates() [TestMethod] public async Task TestClientHideoutAreas() { - var data = await _eftMainClient.GetAsync("/client/hideout/areas"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/hideout/areas"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -361,8 +361,8 @@ public async Task TestClientHideoutAreas() [TestMethod] public async Task TestClientProductionRecipes() { - var data = await _eftMainClient.GetAsync("/client/hideout/production/recipes"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/hideout/production/recipes"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -370,8 +370,8 @@ public async Task TestClientProductionRecipes() [TestMethod] public async Task TestClientHideoutQteList() { - var data = await _eftMainClient.GetAsync("/client/hideout/qte/list"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/hideout/qte/list"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -379,8 +379,8 @@ public async Task TestClientHideoutQteList() [TestMethod] public async Task TestClientHideoutSettings() { - var data = await _eftMainClient.GetAsync("/client/hideout/settings"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/hideout/settings"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -388,8 +388,8 @@ public async Task TestClientHideoutSettings() [TestMethod] public async Task TestClientItems() { - var data = await _eftMainClient.GetAsync("/client/items"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/items"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -397,8 +397,8 @@ public async Task TestClientItems() [TestMethod] public async Task TestClientLanguages() { - var data = await _eftMainClient.GetAsync("/client/languages"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/languages"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -406,8 +406,8 @@ public async Task TestClientLanguages() [TestMethod] public async Task TestClientLocaleCh() { - var data = await _eftMainClient.GetAsync("/client/locale/ch"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/ch"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -415,8 +415,8 @@ public async Task TestClientLocaleCh() [TestMethod] public async Task TestClientLocaleCz() { - var data = await _eftMainClient.GetAsync("/client/locale/cz"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/cz"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -424,8 +424,8 @@ public async Task TestClientLocaleCz() [TestMethod] public async Task TestClientLocaleEn() { - var data = await _eftMainClient.GetAsync("/client/locale/en"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/en"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -433,8 +433,8 @@ public async Task TestClientLocaleEn() [TestMethod] public async Task TestClientLocaleEs() { - var data = await _eftMainClient.GetAsync("/client/locale/es"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/es"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -442,8 +442,8 @@ public async Task TestClientLocaleEs() [TestMethod] public async Task TestClientLocaleEsMx() { - var data = await _eftMainClient.GetAsync("/client/locale/es-mx"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/es-mx"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -451,8 +451,8 @@ public async Task TestClientLocaleEsMx() [TestMethod] public async Task TestClientLocaleFr() { - var data = await _eftMainClient.GetAsync("/client/locale/fr"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/fr"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -460,8 +460,8 @@ public async Task TestClientLocaleFr() [TestMethod] public async Task TestClientLocaleGe() { - var data = await _eftMainClient.GetAsync("/client/locale/ge"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/ge"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -469,8 +469,8 @@ public async Task TestClientLocaleGe() [TestMethod] public async Task TestClientLocaleHu() { - var data = await _eftMainClient.GetAsync("/client/locale/hu"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/hu"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -478,8 +478,8 @@ public async Task TestClientLocaleHu() [TestMethod] public async Task TestClientLocaleIt() { - var data = await _eftMainClient.GetAsync("/client/locale/it"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/it"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -487,8 +487,8 @@ public async Task TestClientLocaleIt() [TestMethod] public async Task TestClientLocaleJp() { - var data = await _eftMainClient.GetAsync("/client/locale/jp"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/jp"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -496,8 +496,8 @@ public async Task TestClientLocaleJp() [TestMethod] public async Task TestClientLocaleKr() { - var data = await _eftMainClient.GetAsync("/client/locale/kr"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/kr"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -505,8 +505,8 @@ public async Task TestClientLocaleKr() [TestMethod] public async Task TestClientLocalePo() { - var data = await _eftMainClient.GetAsync("/client/locale/po"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/po"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -514,8 +514,8 @@ public async Task TestClientLocalePo() [TestMethod] public async Task TestClientLocalePl() { - var data = await _eftMainClient.GetAsync("/client/locale/pl"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/pl"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -523,8 +523,8 @@ public async Task TestClientLocalePl() [TestMethod] public async Task TestClientLocaleRo() { - var data = await _eftMainClient.GetAsync("/client/locale/ro"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/ro"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -532,8 +532,8 @@ public async Task TestClientLocaleRo() [TestMethod] public async Task TestClientLocaleRu() { - var data = await _eftMainClient.GetAsync("/client/locale/ru"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/ru"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -541,8 +541,8 @@ public async Task TestClientLocaleRu() [TestMethod] public async Task TestClientLocaleSk() { - var data = await _eftMainClient.GetAsync("/client/locale/sk"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/sk"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -550,8 +550,8 @@ public async Task TestClientLocaleSk() [TestMethod] public async Task TestClientLocaleTu() { - var data = await _eftMainClient.GetAsync("/client/locale/tu"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locale/tu"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -559,8 +559,8 @@ public async Task TestClientLocaleTu() [TestMethod] public async Task TestClientLocalGameWeather() { - var data = await _eftMainClient.GetAsync("/client/localGame/weather"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/localGame/weather"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -568,8 +568,8 @@ public async Task TestClientLocalGameWeather() [TestMethod] public async Task TestClientLocations() { - var data = await _eftMainClient.GetAsync("/client/locations"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/locations"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -577,8 +577,8 @@ public async Task TestClientLocations() [TestMethod] public async Task TestClientMailDialogList() { - var data = await _eftMainClient.GetAsync("/client/mail/dialog/list"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/mail/dialog/list"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -586,8 +586,8 @@ public async Task TestClientMailDialogList() [TestMethod] public async Task TestClientMatchGroupCurrent() { - var data = await _eftMainClient.GetAsync("/client/match/group/current"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/match/group/current"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -595,8 +595,8 @@ public async Task TestClientMatchGroupCurrent() [TestMethod] public async Task TestClientMatchGroupExitFromMenu() { - var data = await _eftMainClient.GetAsync("/client/match/group/exit_from_menu"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/match/group/exit_from_menu"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -604,8 +604,8 @@ public async Task TestClientMatchGroupExitFromMenu() [TestMethod] public async Task TestClientMatchGroupInviteCancelAll() { - var data = await _eftMainClient.GetAsync("/client/match/group/invite/cancel-all"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/match/group/invite/cancel-all"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -613,8 +613,8 @@ public async Task TestClientMatchGroupInviteCancelAll() [TestMethod] public async Task TestClientMatchLocalEnd() { - var data = await _eftMainClient.GetAsync("/client/match/local/end"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/match/local/end"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -636,8 +636,8 @@ public async Task TestClientMatchLocalStart() var body = Encoding.UTF8.GetBytes(json); // get response - var data = await _eftMainClient.PostAsync("/client/match/local/start", body); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.PostAsync("/client/match/local/start", body); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -645,8 +645,8 @@ public async Task TestClientMatchLocalStart() [TestMethod] public async Task TestClientMenuLocaleCh() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/ch"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/ch"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -654,8 +654,8 @@ public async Task TestClientMenuLocaleCh() [TestMethod] public async Task TestClientMenuLocaleCz() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/cz"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/cz"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -663,8 +663,8 @@ public async Task TestClientMenuLocaleCz() [TestMethod] public async Task TestClientMenuLocaleEn() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/en"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/en"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -672,8 +672,8 @@ public async Task TestClientMenuLocaleEn() [TestMethod] public async Task TestClientMenuLocaleEs() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/es"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/es"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -681,8 +681,8 @@ public async Task TestClientMenuLocaleEs() [TestMethod] public async Task TestClientMenuLocaleEsMx() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/es-mx"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/es-mx"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -690,8 +690,8 @@ public async Task TestClientMenuLocaleEsMx() [TestMethod] public async Task TestClientMenuLocaleFr() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/fr"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/fr"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -699,8 +699,8 @@ public async Task TestClientMenuLocaleFr() [TestMethod] public async Task TestClientMenuLocaleGe() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/ge"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/ge"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -708,8 +708,8 @@ public async Task TestClientMenuLocaleGe() [TestMethod] public async Task TestClientMenuLocaleHu() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/hu"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/hu"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -717,8 +717,8 @@ public async Task TestClientMenuLocaleHu() [TestMethod] public async Task TestClientMenuLocaleIt() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/it"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/it"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -726,8 +726,8 @@ public async Task TestClientMenuLocaleIt() [TestMethod] public async Task TestClientMenuLocaleJp() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/jp"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/jp"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -735,8 +735,8 @@ public async Task TestClientMenuLocaleJp() [TestMethod] public async Task TestClientMenuLocaleKr() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/kr"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/kr"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -744,8 +744,8 @@ public async Task TestClientMenuLocaleKr() [TestMethod] public async Task TestClientMenuLocalePo() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/po"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/po"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -753,8 +753,8 @@ public async Task TestClientMenuLocalePo() [TestMethod] public async Task TestClientMenuLocalePl() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/pl"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/pl"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -762,8 +762,8 @@ public async Task TestClientMenuLocalePl() [TestMethod] public async Task TestClientMenuLocaleRo() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/ro"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/ro"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -771,8 +771,8 @@ public async Task TestClientMenuLocaleRo() [TestMethod] public async Task TestClientMenuLocaleRu() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/ru"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/ru"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -780,8 +780,8 @@ public async Task TestClientMenuLocaleRu() [TestMethod] public async Task TestClientMenuLocaleSk() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/sk"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/sk"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -789,8 +789,8 @@ public async Task TestClientMenuLocaleSk() [TestMethod] public async Task TestClientMenuLocaleTu() { - var data = await _eftMainClient.GetAsync("/client/menu/locale/tu"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/menu/locale/tu"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -798,8 +798,8 @@ public async Task TestClientMenuLocaleTu() [TestMethod] public async Task TestNotifierChannelCreate() { - var data = await _eftMainClient.GetAsync("/client/notifier/channel/create"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/notifier/channel/create"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -807,8 +807,8 @@ public async Task TestNotifierChannelCreate() [TestMethod] public async Task TestProfileStatus() { - var data = await _eftMainClient.GetAsync("/client/profile/status"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/profile/status"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -816,8 +816,8 @@ public async Task TestProfileStatus() [TestMethod] public async Task TestPutMetrics() { - var data = await _eftMainClient.GetAsync("/client/putMetrics"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/putMetrics"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -825,8 +825,8 @@ public async Task TestPutMetrics() [TestMethod] public async Task TestProfileSettings() { - var data = await _eftMainClient.GetAsync("/client/profile/settings"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/profile/settings"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -834,8 +834,8 @@ public async Task TestProfileSettings() [TestMethod] public async Task TestClientQuestList() { - var data = await _eftMainClient.GetAsync("/client/quest/list"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/quest/list"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -843,8 +843,8 @@ public async Task TestClientQuestList() [TestMethod] public async Task TestClientRaidConfiguration() { - var data = await _eftMainClient.GetAsync("/client/raid/configuration"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/raid/configuration"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -852,8 +852,8 @@ public async Task TestClientRaidConfiguration() [TestMethod] public async Task TestClientRepeatableQuestActivityPeriods() { - var data = await _eftMainClient.GetAsync("/client/repeatalbeQuests/activityPeriods"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/repeatalbeQuests/activityPeriods"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -861,8 +861,8 @@ public async Task TestClientRepeatableQuestActivityPeriods() [TestMethod] public async Task TestClientServerList() { - var data = await _eftMainClient.GetAsync("/client/server/list"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/server/list"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -870,8 +870,8 @@ public async Task TestClientServerList() [TestMethod] public async Task TestClientSettings() { - var data = await _eftMainClient.GetAsync("/client/settings"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/settings"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -879,8 +879,8 @@ public async Task TestClientSettings() [TestMethod] public async Task TestClientSurvey() { - var data = await _eftMainClient.GetAsync("/client/survey"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/survey"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -888,8 +888,8 @@ public async Task TestClientSurvey() [TestMethod] public async Task TestClientTradingApiTraderSettings() { - var data = await _eftMainClient.GetAsync("/client/trading/api/traderSettings"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/trading/api/traderSettings"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } @@ -897,8 +897,8 @@ public async Task TestClientTradingApiTraderSettings() [TestMethod] public async Task TestClientWeather() { - var data = await _eftMainClient.GetAsync("/client/weather"); - var result = Encoding.UTF8.GetString(data); + var response = await _eftMainClient.GetAsync("/client/weather"); + var result = Encoding.UTF8.GetString(response.Body); Assert.IsFalse(string.IsNullOrEmpty(result)); } From 403e4b51a1e25ba20a358bc44dc5ac8de6a91def Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=99=E7=A9=8F=E9=9D=84?= <170472707+seionmoya@users.noreply.github.com> Date: Thu, 19 Sep 2024 01:29:26 +0200 Subject: [PATCH 2/4] Send 404 on unknown route --- Fuyu.Common/Networking/HttpContext.cs | 11 ++++++++--- Fuyu.Common/Networking/HttpResponse.cs | 4 +++- Fuyu.Common/Networking/HttpRouter.cs | 2 -- Fuyu.Common/Networking/HttpServer.cs | 5 +++++ Fuyu.Common/Networking/RouteNotFoundException.cs | 11 +++++++++++ Fuyu.Common/Networking/Router.cs | 2 +- Fuyu.Common/Networking/WsRouter.cs | 2 -- 7 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 Fuyu.Common/Networking/RouteNotFoundException.cs diff --git a/Fuyu.Common/Networking/HttpContext.cs b/Fuyu.Common/Networking/HttpContext.cs index da12a9e..8324d77 100644 --- a/Fuyu.Common/Networking/HttpContext.cs +++ b/Fuyu.Common/Networking/HttpContext.cs @@ -1,4 +1,3 @@ -using System.Collections.Generic; using System.IO; using System.Net; using System.Text; @@ -52,7 +51,7 @@ public string GetSessionId() return Request.Cookies["PHPSESSID"].Value; } - protected async Task SendAsync(byte[] data, string mime, bool zipped = true) + protected async Task SendAsync(byte[] data, string mime, HttpStatusCode status, bool zipped = true) { // used for plaintext debugging if (Request.Headers["fuyu-debug"] != null) @@ -65,6 +64,7 @@ protected async Task SendAsync(byte[] data, string mime, bool zipped = true) data = Zlib.Compress(data, ZlibCompression.Level9); } + Response.StatusCode = (int)status; Response.ContentType = mime; Response.ContentLength64 = data.Length; @@ -74,10 +74,15 @@ protected async Task SendAsync(byte[] data, string mime, bool zipped = true) } } + public async Task SendStatus(HttpStatusCode status) + { + await SendAsync(null, "plain/text", status, false); + } + public async Task SendJsonAsync(string text, bool zipped = true) { var encoded = Encoding.UTF8.GetBytes(text); - await SendAsync(encoded, "application/json; charset=utf-8", zipped); + await SendAsync(encoded, "application/json; charset=utf-8", HttpStatusCode.Accepted, zipped); } public void Close() diff --git a/Fuyu.Common/Networking/HttpResponse.cs b/Fuyu.Common/Networking/HttpResponse.cs index e841fe3..3add7a2 100644 --- a/Fuyu.Common/Networking/HttpResponse.cs +++ b/Fuyu.Common/Networking/HttpResponse.cs @@ -1,3 +1,5 @@ +using System.Net; + namespace Fuyu.Common.Networking { public class HttpResponse @@ -5,7 +7,7 @@ public class HttpResponse // TODO: // * use enum instead // -- seionmoya, 2024/09/19 - public int Status; + public HttpStatusCode Status; // TODO: // * use System.Memory instead diff --git a/Fuyu.Common/Networking/HttpRouter.cs b/Fuyu.Common/Networking/HttpRouter.cs index 544fe0f..c389958 100644 --- a/Fuyu.Common/Networking/HttpRouter.cs +++ b/Fuyu.Common/Networking/HttpRouter.cs @@ -1,5 +1,3 @@ -using System; -using System.Collections.Generic; using System.Threading.Tasks; namespace Fuyu.Common.Networking diff --git a/Fuyu.Common/Networking/HttpServer.cs b/Fuyu.Common/Networking/HttpServer.cs index d8db564..12a8a81 100644 --- a/Fuyu.Common/Networking/HttpServer.cs +++ b/Fuyu.Common/Networking/HttpServer.cs @@ -60,6 +60,11 @@ private async Task OnHttpRequestAsync(HttpListenerContext listenerContext) { await HttpRouter.RouteAsync(context); } + catch (RouteNotFoundException ex) + { + Terminal.WriteLine(ex.Message); + await context.SendStatus(HttpStatusCode.NotFound); + } catch (Exception ex) { Terminal.WriteLine(ex.Message); diff --git a/Fuyu.Common/Networking/RouteNotFoundException.cs b/Fuyu.Common/Networking/RouteNotFoundException.cs new file mode 100644 index 0000000..5e88bf0 --- /dev/null +++ b/Fuyu.Common/Networking/RouteNotFoundException.cs @@ -0,0 +1,11 @@ +using System; + +namespace Fuyu.Common.Networking +{ + public class RouteNotFoundException : Exception + { + public RouteNotFoundException(string message) : base(message) + { + } + } +} \ No newline at end of file diff --git a/Fuyu.Common/Networking/Router.cs b/Fuyu.Common/Networking/Router.cs index f56b378..c6af969 100644 --- a/Fuyu.Common/Networking/Router.cs +++ b/Fuyu.Common/Networking/Router.cs @@ -26,7 +26,7 @@ public List GetAllMatching(Context context) if (matches.Count == 0) { - throw new Exception($"No match on path {context.Path}"); + throw new RouteNotFoundException($"No match on path {context.Path}"); } // NOTE: do we want to support multi-matching? diff --git a/Fuyu.Common/Networking/WsRouter.cs b/Fuyu.Common/Networking/WsRouter.cs index 86214d4..7a1a82a 100644 --- a/Fuyu.Common/Networking/WsRouter.cs +++ b/Fuyu.Common/Networking/WsRouter.cs @@ -1,5 +1,3 @@ -using System; -using System.Collections.Generic; using System.Threading.Tasks; namespace Fuyu.Common.Networking From 02f7e03c27e9848818482c482c59a4823889cfa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=99=E7=A9=8F=E9=9D=84?= <170472707+seionmoya@users.noreply.github.com> Date: Thu, 19 Sep 2024 01:32:46 +0200 Subject: [PATCH 3/4] LSP lied to me --- Fuyu.Common/Networking/HttpClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Fuyu.Common/Networking/HttpClient.cs b/Fuyu.Common/Networking/HttpClient.cs index d8449ad..90e8fbd 100644 --- a/Fuyu.Common/Networking/HttpClient.cs +++ b/Fuyu.Common/Networking/HttpClient.cs @@ -86,7 +86,7 @@ protected async Task SendAsync(HttpMethod method, string path, byt return new HttpResponse() { - Status = (int)response.StatusCode, + Status = response.StatusCode, Body = body }; } From 37d803ca216f755e0cbe510b9285924d2e75fa03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=99=E7=A9=8F=E9=9D=84?= <170472707+seionmoya@users.noreply.github.com> Date: Thu, 19 Sep 2024 01:44:16 +0200 Subject: [PATCH 4/4] Todo: clean this up later --- Backup/Fuyu.Tests.Server.Arena/EndToEnd/BackendTest.cs | 2 +- Fuyu.Backend.Core/Services/RequestService.cs | 6 +++--- Fuyu.Common/Networking/HttpClient.cs | 2 +- Fuyu.Launcher.Core/Services/RequestService.cs | 6 +++--- Fuyu.Tests.Backend.EFT/EndToEnd/BackendTest.cs | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Backup/Fuyu.Tests.Server.Arena/EndToEnd/BackendTest.cs b/Backup/Fuyu.Tests.Server.Arena/EndToEnd/BackendTest.cs index 315aa32..afe24a8 100644 --- a/Backup/Fuyu.Tests.Server.Arena/EndToEnd/BackendTest.cs +++ b/Backup/Fuyu.Tests.Server.Arena/EndToEnd/BackendTest.cs @@ -19,7 +19,7 @@ public static void AssemblyInitialize(TestContext testContext) ArenaDatabase.Load(); // create request clients - _arenaMainClient = new EftHttpClient("http://localhost:8020"); + _arenaMainClient = new HttpClient("http://localhost:8020"); } } } \ No newline at end of file diff --git a/Fuyu.Backend.Core/Services/RequestService.cs b/Fuyu.Backend.Core/Services/RequestService.cs index b452762..fb570b2 100644 --- a/Fuyu.Backend.Core/Services/RequestService.cs +++ b/Fuyu.Backend.Core/Services/RequestService.cs @@ -18,9 +18,9 @@ static RequestService() // TODO: // * get address from config // -- seionmoya, 2024/09/08 - _httpClients.Add("fuyu", new HttpClient("http://localhost:8000")); - _httpClients.Add("eft", new HttpClient("http://localhost:8010")); - _httpClients.Add("arena", new HttpClient("http://localhost:8020")); + _httpClients.Add("fuyu", new EftHttpClient("http://localhost:8000", string.Empty)); + _httpClients.Add("eft", new EftHttpClient("http://localhost:8010", string.Empty)); + _httpClients.Add("arena", new EftHttpClient("http://localhost:8020", string.Empty)); } private static T2 HttpPost(string id, string path, T1 request) diff --git a/Fuyu.Common/Networking/HttpClient.cs b/Fuyu.Common/Networking/HttpClient.cs index 90e8fbd..128af23 100644 --- a/Fuyu.Common/Networking/HttpClient.cs +++ b/Fuyu.Common/Networking/HttpClient.cs @@ -69,7 +69,7 @@ protected async Task SendAsync(HttpMethod method, string path, byt throw new Exception($"Code {response.StatusCode}"); } - byte[] body; + var body = Array.Empty(); // grap response payload using (var ms = new MemoryStream()) diff --git a/Fuyu.Launcher.Core/Services/RequestService.cs b/Fuyu.Launcher.Core/Services/RequestService.cs index 8f1ad21..b83dfdb 100644 --- a/Fuyu.Launcher.Core/Services/RequestService.cs +++ b/Fuyu.Launcher.Core/Services/RequestService.cs @@ -19,9 +19,9 @@ static RequestService() { _httpClients = new ThreadDictionary(); - _httpClients.Add("fuyu", new HttpClient(SettingsService.FuyuAddress)); - _httpClients.Add("eft", new HttpClient(SettingsService.EftAddress)); - _httpClients.Add("arena", new HttpClient(SettingsService.ArenaAddress)); + _httpClients.Add("fuyu", new EftHttpClient(SettingsService.FuyuAddress, string.Empty)); + _httpClients.Add("eft", new EftHttpClient(SettingsService.EftAddress, string.Empty)); + _httpClients.Add("arena", new EftHttpClient(SettingsService.ArenaAddress, string.Empty)); } private static T2 HttpPost(string id, string path, T1 request) diff --git a/Fuyu.Tests.Backend.EFT/EndToEnd/BackendTest.cs b/Fuyu.Tests.Backend.EFT/EndToEnd/BackendTest.cs index 222e41c..a367505 100644 --- a/Fuyu.Tests.Backend.EFT/EndToEnd/BackendTest.cs +++ b/Fuyu.Tests.Backend.EFT/EndToEnd/BackendTest.cs @@ -20,7 +20,7 @@ namespace Fuyu.Tests.Backend.EFT.EndToEnd [TestClass] public class BackendTest { - private static HttpClient _eftMainClient; + private static EftHttpClient _eftMainClient; private static string CreateFuyuAccount(string username, string password) {