/// <inheritdoc/>
        /// <remarks>
        /// It may seem backwards that an upload only performs a delete request, however this is not trying
        /// to track the available listings, that is done via the listings packet. All this does is remove
        /// a listing, or delete it, when a purchase has been made.
        /// </remarks>
        public async Task UploadPurchase(MarketBoardPurchaseHandler purchaseHandler)
        {
            var clientState = Service <ClientState.ClientState> .Get();

            var itemId  = purchaseHandler.CatalogId;
            var worldId = clientState.LocalPlayer?.CurrentWorld.Id ?? 0;

            // ====================================================================================

            var deleteListingObject = new UniversalisItemListingDeleteRequest
            {
                PricePerUnit = purchaseHandler.PricePerUnit,
                Quantity     = purchaseHandler.ItemQuantity,
                ListingId    = purchaseHandler.ListingId.ToString(),
                RetainerId   = purchaseHandler.RetainerId.ToString(),
                UploaderId   = clientState.LocalContentId.ToString(),
            };

            var deletePath    = $"/api/{worldId}/{itemId}/delete";
            var deleteListing = JsonConvert.SerializeObject(deleteListingObject);

            Log.Verbose($"{deletePath}: {deleteListing}");

            var content = new StringContent(deleteListing, Encoding.UTF8, "application/json");
            var message = new HttpRequestMessage(HttpMethod.Post, $"{ApiBase}{deletePath}");

            message.Headers.Add("Authorization", ApiKey);
            message.Content = content;

            await Util.HttpClient.SendAsync(message);

            // ====================================================================================

            Log.Verbose("Universalis purchase upload completed.");
        }
Esempio n. 2
0
        /// <inheritdoc/>
        /// <remarks>
        /// It may seem backwards that an upload only performs a delete request, however this is not trying
        /// to track the available listings, that is done via the listings packet. All this does is remove
        /// a listing, or delete it, when a purchase has been made.
        /// </remarks>
        public void UploadPurchase(MarketBoardPurchaseHandler purchaseHandler)
        {
            var clientState = Service <ClientState.ClientState> .Get();

            using var client = new HttpClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(ApiKey);

            var itemId  = purchaseHandler.CatalogId;
            var worldId = clientState.LocalPlayer?.CurrentWorld.Id ?? 0;

            // ====================================================================================

            var deleteListingObject = new UniversalisItemListingDeleteRequest
            {
                PricePerUnit = purchaseHandler.PricePerUnit,
                Quantity     = purchaseHandler.ItemQuantity,
                ListingId    = purchaseHandler.ListingId.ToString(),
                RetainerId   = purchaseHandler.RetainerId.ToString(),
                UploaderId   = clientState.LocalContentId.ToString(),
            };

            var deletePath    = $"/api/{worldId}/{itemId}/delete";
            var deleteListing = JsonConvert.SerializeObject(deleteListingObject);

            Log.Verbose($"{deletePath}: {deleteListing}");

            client.PostAsync($"{ApiBase}{deletePath}", new StringContent(deleteListing, Encoding.UTF8, "application/json")).GetAwaiter().GetResult();

            // ====================================================================================

            Log.Verbose("Universalis purchase upload completed.");
        }