using System.Threading; using System.Threading.Tasks; using Amazon.SellingPartnerApiSDK.AmazonSpApiSDK.Models.ShippingV2; using Amazon.SellingPartnerApiSDK.Misc; namespace Amazon.SellingPartnerApiSDK.Services { public class ShippingV2Service : RequestService { public ShippingV2Service(AmazonCredential amazonCredential) : base(amazonCredential) { } public GetRatesResult GetRates(GetRatesRequest getRatesRequest) => Task.Run(() => GetRatesAsync(getRatesRequest)).ConfigureAwait(false).GetAwaiter().GetResult(); public async Task GetRatesAsync(GetRatesRequest getRatesRequest, CancellationToken cancellationToken = default) { await CreateAuthorizedRequestAsync(ShippingApiV2Urls.GetRates, RestSharp.Method.Post, postJsonObj: getRatesRequest, cancellationToken: cancellationToken); var response = await ExecuteRequestAsync(RateLimitType.ShippingV2_GetRates, cancellationToken); if (response != null && response.Payload != null) return response.Payload; return null; } public PurchaseShipmentResult PurchaseShipment(PurchaseShipmentRequest purchaseShipmentRequest) => Task.Run(() => PurchaseShipmentAsync(purchaseShipmentRequest)).ConfigureAwait(false).GetAwaiter() .GetResult(); public async Task PurchaseShipmentAsync(PurchaseShipmentRequest purchaseShipmentRequest, CancellationToken cancellationToken = default) { await CreateAuthorizedRequestAsync(ShippingApiV2Urls.PurchaseShipment, RestSharp.Method.Post, postJsonObj: purchaseShipmentRequest, cancellationToken: cancellationToken); var response = await ExecuteRequestAsync(RateLimitType.ShippingV2_PurchaseShipment, cancellationToken); if (response != null && response.Payload != null) return response.Payload; return null; } public OneClickShipmentResult OneClickShipment(OneClickShipmentRequest oneClickShipmentRequest) => Task.Run(() => OneClickShipmentAsync(oneClickShipmentRequest)).ConfigureAwait(false).GetAwaiter() .GetResult(); public async Task OneClickShipmentAsync(OneClickShipmentRequest oneClickShipmentRequest, CancellationToken cancellationToken = default) { await CreateAuthorizedRequestAsync(ShippingApiV2Urls.OneClickShipment, RestSharp.Method.Post, postJsonObj: oneClickShipmentRequest, cancellationToken: cancellationToken); var response = await ExecuteRequestAsync(RateLimitType.ShippingV2_GetRates, cancellationToken); if (response != null && response.Payload != null) return response.Payload; return null; } } }