From a0e43517b532bc6b8e9b95f820a956e696e58f6f Mon Sep 17 00:00:00 2001 From: karashiiro <49822414+karashiiro@users.noreply.github.com> Date: Fri, 25 Jun 2021 07:55:07 -0700 Subject: [PATCH] Implement partial upload process for MB purchases --- .../IMarketBoardUploader.cs | 6 ++++++ .../UniversalisMarketBoardPurchaseRequest.cs | 9 +++++++++ .../UniversalisMarketBoardUploader.cs | 18 ++++++++++++++++++ Dalamud/Game/Network/NetworkHandlers.cs | 5 +++-- 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardPurchaseRequest.cs diff --git a/Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs b/Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs index c6f2f0303..a5f507a24 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs +++ b/Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs @@ -18,5 +18,11 @@ namespace Dalamud.Game.Network.MarketBoardUploaders /// /// The tax rate data being uploaded. void UploadTax(MarketTaxRates taxRates); + + /// + /// Upload information about a purchase this client has made. + /// + /// That thing with Louisiana. + void UploadPurchase(MarketBoardPurchase purchase); } } diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardPurchaseRequest.cs b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardPurchaseRequest.cs new file mode 100644 index 000000000..d6f008ad9 --- /dev/null +++ b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardPurchaseRequest.cs @@ -0,0 +1,9 @@ +namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis +{ + /// + /// Request payload for market board purchases. + /// + public class UniversalisMarketBoardPurchaseRequest + { + } +} diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs index cffa73491..49ecc45ad 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs +++ b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs @@ -136,5 +136,23 @@ namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders Log.Verbose("Universalis tax upload completed."); } + + /// + public void UploadPurchase(MarketBoardPurchase purchase) + { + using var client = new WebClient(); + client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); + client.Headers.Add(HttpRequestHeader.Authorization, ApiKey); + + var purchaseRequest = new UniversalisMarketBoardPurchaseRequest(); + + var worldId = this.dalamud.ClientState.LocalPlayer?.CurrentWorld.Id ?? 0; + + var purchaseUpload = JsonConvert.SerializeObject(purchaseRequest); + client.UploadString(ApiBase + $"/{purchase.CatalogId}/{worldId}/delete", "POST", purchaseUpload); + Log.Verbose(purchaseUpload); + + Log.Verbose("Universalis tax upload completed."); + } } } diff --git a/Dalamud/Game/Network/NetworkHandlers.cs b/Dalamud/Game/Network/NetworkHandlers.cs index c918d8b83..945627b83 100644 --- a/Dalamud/Game/Network/NetworkHandlers.cs +++ b/Dalamud/Game/Network/NetworkHandlers.cs @@ -23,11 +23,11 @@ namespace Dalamud.Game.Network private readonly List marketBoardRequests = new(); - private MarketBoardPurchaseHandler marketBoardPurchaseHandler; - private readonly bool optOutMbUploads; private readonly IMarketBoardUploader uploader; + private MarketBoardPurchaseHandler marketBoardPurchaseHandler; + /// /// Initializes a new instance of the class. /// @@ -282,6 +282,7 @@ namespace Dalamud.Game.Network || purchase.CatalogId == this.marketBoardPurchaseHandler.CatalogId + 1000000)) { // HQ Log.Information("Bought " + purchase.ItemQuantity + "x " + this.marketBoardPurchaseHandler.CatalogId + " for " + (this.marketBoardPurchaseHandler.PricePerUnit * purchase.ItemQuantity) + " gils, listing id is " + this.marketBoardPurchaseHandler.ListingId); + Task.Run(() => this.uploader.UploadPurchase(purchase)); } this.marketBoardPurchaseHandler = null;