/// <inheritdoc/> public async Task Upload(MarketBoardItemRequest request) { var clientState = Service <ClientState.ClientState> .Get(); Log.Verbose("Starting Universalis upload."); var uploader = clientState.LocalContentId; // ==================================================================================== var listingsUploadObject = new UniversalisItemListingsUploadRequest { WorldId = clientState.LocalPlayer?.CurrentWorld.Id ?? 0, UploaderId = uploader.ToString(), ItemId = request.CatalogId, Listings = new List <UniversalisItemListingsEntry>(), }; foreach (var marketBoardItemListing in request.Listings) { var universalisListing = new UniversalisItemListingsEntry { Hq = marketBoardItemListing.IsHq, SellerId = marketBoardItemListing.RetainerOwnerId.ToString(), RetainerName = marketBoardItemListing.RetainerName, RetainerId = marketBoardItemListing.RetainerId.ToString(), CreatorId = marketBoardItemListing.ArtisanId.ToString(), CreatorName = marketBoardItemListing.PlayerName, OnMannequin = marketBoardItemListing.OnMannequin, LastReviewTime = ((DateTimeOffset)marketBoardItemListing.LastReviewTime).ToUnixTimeSeconds(), PricePerUnit = marketBoardItemListing.PricePerUnit, Quantity = marketBoardItemListing.ItemQuantity, RetainerCity = marketBoardItemListing.RetainerCityId, Materia = new List <UniversalisItemMateria>(), }; foreach (var itemMateria in marketBoardItemListing.Materia) { universalisListing.Materia.Add(new UniversalisItemMateria { MateriaId = itemMateria.MateriaId, SlotId = itemMateria.Index, }); } listingsUploadObject.Listings.Add(universalisListing); } var listingPath = "/upload"; var listingUpload = JsonConvert.SerializeObject(listingsUploadObject); Log.Verbose($"{listingPath}: {listingUpload}"); await Util.HttpClient.PostAsync($"{ApiBase}{listingPath}/{ApiKey}", new StringContent(listingUpload, Encoding.UTF8, "application/json")); // ==================================================================================== var historyUploadObject = new UniversalisHistoryUploadRequest { WorldId = clientState.LocalPlayer?.CurrentWorld.Id ?? 0, UploaderId = uploader.ToString(), ItemId = request.CatalogId, Entries = new List <UniversalisHistoryEntry>(), }; foreach (var marketBoardHistoryListing in request.History) { historyUploadObject.Entries.Add(new UniversalisHistoryEntry { BuyerName = marketBoardHistoryListing.BuyerName, Hq = marketBoardHistoryListing.IsHq, OnMannequin = marketBoardHistoryListing.OnMannequin, PricePerUnit = marketBoardHistoryListing.SalePrice, Quantity = marketBoardHistoryListing.Quantity, Timestamp = ((DateTimeOffset)marketBoardHistoryListing.PurchaseTime).ToUnixTimeSeconds(), }); } var historyPath = "/upload"; var historyUpload = JsonConvert.SerializeObject(historyUploadObject); Log.Verbose($"{historyPath}: {historyUpload}"); await Util.HttpClient.PostAsync($"{ApiBase}{historyPath}/{ApiKey}", new StringContent(historyUpload, Encoding.UTF8, "application/json")); // ==================================================================================== Log.Verbose("Universalis data upload for item#{0} completed.", request.CatalogId); }
public void Upload(MarketBoardItemRequest request) { using (var client = new WebClient()) { client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); Log.Verbose("Starting Universalis upload."); var uploader = this.dalamud.ClientState.LocalContentId; var listingsRequestObject = new UniversalisItemListingsUploadRequest(); listingsRequestObject.WorldId = this.dalamud.ClientState.LocalPlayer?.CurrentWorld.Id ?? 0; listingsRequestObject.UploaderId = uploader; listingsRequestObject.ItemId = request.CatalogId; listingsRequestObject.Listings = new List <UniversalisItemListingsEntry>(); foreach (var marketBoardItemListing in request.Listings) { var universalisListing = new UniversalisItemListingsEntry { Hq = marketBoardItemListing.IsHq, SellerId = marketBoardItemListing.RetainerOwnerId, RetainerName = marketBoardItemListing.RetainerName, RetainerId = marketBoardItemListing.RetainerId, CreatorId = marketBoardItemListing.ArtisanId, CreatorName = marketBoardItemListing.PlayerName, OnMannequin = marketBoardItemListing.OnMannequin, LastReviewTime = ((DateTimeOffset)marketBoardItemListing.LastReviewTime).ToUnixTimeSeconds(), PricePerUnit = marketBoardItemListing.PricePerUnit, Quantity = marketBoardItemListing.ItemQuantity, RetainerCity = marketBoardItemListing.RetainerCityId }; universalisListing.Materia = new List <UniversalisItemMateria>(); foreach (var itemMateria in marketBoardItemListing.Materia) { universalisListing.Materia.Add(new UniversalisItemMateria { MateriaId = itemMateria.MateriaId, SlotId = itemMateria.Index }); } listingsRequestObject.Listings.Add(universalisListing); } var upload = JsonConvert.SerializeObject(listingsRequestObject); client.UploadString(ApiBase + $"/upload/{ApiKey}", "POST", upload); Log.Verbose(upload); var historyRequestObject = new UniversalisHistoryUploadRequest(); historyRequestObject.WorldId = this.dalamud.ClientState.LocalPlayer?.CurrentWorld.Id ?? 0; historyRequestObject.UploaderId = uploader; historyRequestObject.ItemId = request.CatalogId; historyRequestObject.Entries = new List <UniversalisHistoryEntry>(); foreach (var marketBoardHistoryListing in request.History) { historyRequestObject.Entries.Add(new UniversalisHistoryEntry { BuyerName = marketBoardHistoryListing.BuyerName, Hq = marketBoardHistoryListing.IsHq, OnMannequin = marketBoardHistoryListing.OnMannequin, PricePerUnit = marketBoardHistoryListing.SalePrice, Quantity = marketBoardHistoryListing.Quantity, Timestamp = ((DateTimeOffset)marketBoardHistoryListing.PurchaseTime).ToUnixTimeSeconds() }); } client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); var historyUpload = JsonConvert.SerializeObject(historyRequestObject); client.UploadString(ApiBase + $"/upload/{ApiKey}", "POST", historyUpload); Log.Verbose(historyUpload); Log.Verbose("Universalis data upload for item#{0} completed.", request.CatalogId); } }