From 89314e0c0ed0c9cea8d07f46f8548aac2cb04633 Mon Sep 17 00:00:00 2001 From: karashiiro <49822414+karashiiro@users.noreply.github.com> Date: Sat, 24 Jul 2021 23:59:31 -0700 Subject: [PATCH] feat(Network): implement full listing deletion process --- .../IMarketBoardUploader.cs | 4 +- .../UniversalisItemListingDeleteRequest.cs | 46 +++++++++++++++++++ .../UniversalisMarketBoardPurchaseRequest.cs | 9 ---- .../UniversalisMarketBoardUploader.cs | 19 ++++++-- Dalamud/Game/Network/NetworkHandlers.cs | 2 +- 5 files changed, 63 insertions(+), 17 deletions(-) create mode 100644 Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingDeleteRequest.cs delete 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 a5f507a24..9820ac237 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs +++ b/Dalamud/Game/Network/MarketBoardUploaders/IMarketBoardUploader.cs @@ -22,7 +22,7 @@ namespace Dalamud.Game.Network.MarketBoardUploaders /// /// Upload information about a purchase this client has made. /// - /// That thing with Louisiana. - void UploadPurchase(MarketBoardPurchase purchase); + /// The purchase handler data associated with the sale. + void UploadPurchase(MarketBoardPurchaseHandler purchaseHandler); } } diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingDeleteRequest.cs b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingDeleteRequest.cs new file mode 100644 index 000000000..d0101b0b9 --- /dev/null +++ b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisItemListingDeleteRequest.cs @@ -0,0 +1,46 @@ +using Newtonsoft.Json; + +namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis +{ + /// + /// Request payload for market board purchases. + /// + public class UniversalisItemListingDeleteRequest + { + /// + /// Gets or sets the object ID of the retainer associated with the sale. + /// + [JsonProperty("retainerID")] + public ulong RetainerId { get; set; } + + /// + /// Gets or sets the object ID of the item listing. + /// + [JsonProperty("listingID")] + public ulong ListingId { get; set; } + + /// + /// Gets or sets the item ID of the item that was purchased. + /// + [JsonProperty("itemID")] + public uint ItemId { get; set; } + + /// + /// Gets or sets the quantity of the item that was purchased. + /// + [JsonProperty("quantity")] + public uint Quantity { get; set; } + + /// + /// Gets or sets the unit price of the item. + /// + [JsonProperty("pricePerUnit")] + public uint PricePerUnit { get; set; } + + /// + /// Gets or sets the uploader ID. + /// + [JsonProperty("uploaderID")] + public string UploaderId { get; set; } + } +} diff --git a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardPurchaseRequest.cs b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardPurchaseRequest.cs deleted file mode 100644 index d6f008ad9..000000000 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardPurchaseRequest.cs +++ /dev/null @@ -1,9 +0,0 @@ -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 49ecc45ad..469d13f8a 100644 --- a/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs +++ b/Dalamud/Game/Network/MarketBoardUploaders/Universalis/UniversalisMarketBoardUploader.cs @@ -138,21 +138,30 @@ namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders } /// - public void UploadPurchase(MarketBoardPurchase purchase) + public void UploadPurchase(MarketBoardPurchaseHandler purchaseHandler) { using var client = new WebClient(); client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); client.Headers.Add(HttpRequestHeader.Authorization, ApiKey); - var purchaseRequest = new UniversalisMarketBoardPurchaseRequest(); - + var itemId = purchaseHandler.CatalogId; var worldId = this.dalamud.ClientState.LocalPlayer?.CurrentWorld.Id ?? 0; + var purchaseRequest = new UniversalisItemListingDeleteRequest + { + ItemId = itemId, + PricePerUnit = purchaseHandler.PricePerUnit, + Quantity = purchaseHandler.ItemQuantity, + ListingId = purchaseHandler.ListingId, + RetainerId = purchaseHandler.RetainerId, + UploaderId = this.dalamud.ClientState.LocalContentId.ToString(), + }; + var purchaseUpload = JsonConvert.SerializeObject(purchaseRequest); - client.UploadString(ApiBase + $"/{purchase.CatalogId}/{worldId}/delete", "POST", purchaseUpload); + client.UploadString(ApiBase + $"/{itemId}/{worldId}/delete", "POST", purchaseUpload); Log.Verbose(purchaseUpload); - Log.Verbose("Universalis tax upload completed."); + Log.Verbose("Universalis purchase upload completed."); } } } diff --git a/Dalamud/Game/Network/NetworkHandlers.cs b/Dalamud/Game/Network/NetworkHandlers.cs index b2d3128f1..1a77830e4 100644 --- a/Dalamud/Game/Network/NetworkHandlers.cs +++ b/Dalamud/Game/Network/NetworkHandlers.cs @@ -282,7 +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)); + Task.Run(() => this.uploader.UploadPurchase(this.marketBoardPurchaseHandler)); } this.marketBoardPurchaseHandler = null;