Implement partial upload process for MB purchases

This commit is contained in:
karashiiro 2021-06-25 07:55:07 -07:00
parent 8b8d1ca74c
commit a0e43517b5
4 changed files with 36 additions and 2 deletions

View file

@ -18,5 +18,11 @@ namespace Dalamud.Game.Network.MarketBoardUploaders
/// </summary>
/// <param name="taxRates">The tax rate data being uploaded.</param>
void UploadTax(MarketTaxRates taxRates);
/// <summary>
/// Upload information about a purchase this client has made.
/// </summary>
/// <param name="purchase">That thing with Louisiana.</param>
void UploadPurchase(MarketBoardPurchase purchase);
}
}

View file

@ -0,0 +1,9 @@
namespace Dalamud.Game.Network.MarketBoardUploaders.Universalis
{
/// <summary>
/// Request payload for market board purchases.
/// </summary>
public class UniversalisMarketBoardPurchaseRequest
{
}
}

View file

@ -136,5 +136,23 @@ namespace Dalamud.Game.Network.Universalis.MarketBoardUploaders
Log.Verbose("Universalis tax upload completed.");
}
/// <inheritdoc/>
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.");
}
}
}

View file

@ -23,11 +23,11 @@ namespace Dalamud.Game.Network
private readonly List<MarketBoardItemRequest> marketBoardRequests = new();
private MarketBoardPurchaseHandler marketBoardPurchaseHandler;
private readonly bool optOutMbUploads;
private readonly IMarketBoardUploader uploader;
private MarketBoardPurchaseHandler marketBoardPurchaseHandler;
/// <summary>
/// Initializes a new instance of the <see cref="NetworkHandlers"/> class.
/// </summary>
@ -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;