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;