示例#1
0
        internal async Task <IEnumerable <InventoryStatusResponse> > ReviseInventoriesStatusAsync(IEnumerable <InventoryStatusRequest> products, string mark)
        {
            var methodParameters = products.ToJson();

            try
            {
                EbayLogger.LogTraceStarted(this.CreateMethodCallInfo(methodParameters, mark));

                var reviseInventoriesStatus = await this.EbayServiceLowLevel.ReviseInventoriesStatusAsync(products, mark).ConfigureAwait(false);

                var inventoryStatusResponses = reviseInventoriesStatus as IList <InventoryStatusResponse> ?? reviseInventoriesStatus.ToList();

                var errorsToSkip = new List <ResponseError> {
                    EbayErrors.EbayPixelSizeError, EbayErrors.LvisBlockedError, EbayErrors.UnsupportedListingType, EbayErrors.ReplaceableValue, EbayErrors.VariationLevelSKUAndItemIDShouldBeSupplied
                };
                var errorsThatMustBeSkipped = inventoryStatusResponses.CollectAllErros().Where(x => errorsToSkip.Any(y => y.ErrorCode == x.ErrorCode)).ToList();
                EbayLogger.LogTraceInnerError(this.CreateMethodCallInfo(methodParameters, mark, errorsThatMustBeSkipped.ToJson()));

                inventoryStatusResponses.SkipErrorsAndDo(null, errorsThatMustBeSkipped);
                inventoryStatusResponses.ThrowOnError(x => (x.Select(y => ( InventoryStatusResponse )y).ToList()).ToJson());

                var items     = inventoryStatusResponses.Where(y => y.Items != null).SelectMany(x => x.Items).ToList();
                var briefInfo = items.ToJson();
                EbayLogger.LogTraceEnded(this.CreateMethodCallInfo(methodParameters, mark, methodResult: briefInfo));

                return(reviseInventoriesStatus);
            }
            catch (Exception exception)
            {
                var ebayException = new EbayCommonException(string.Format("Error.{0})", this.CreateMethodCallInfo(methodParameters, mark)), exception);
                LogTraceException(ebayException.Message, ebayException);
                throw ebayException;
            }
        }
示例#2
0
        public async Task <List <string> > GetSaleRecordsNumbersAsync(params string[] saleRecordsIDs)
        {
            var methodParameters = saleRecordsIDs.ToJson();
            var mark             = Guid.NewGuid().ToString();

            try
            {
                EbayLogger.LogTraceStarted(this.CreateMethodCallInfo(methodParameters, mark));

                var seleRecordsIdsFilteredOnlyExisting = new List <string>();

                if (saleRecordsIDs == null || !saleRecordsIDs.Any())
                {
                    return(seleRecordsIdsFilteredOnlyExisting);
                }

                var salerecordIds = saleRecordsIDs.ToList();

                var currentMethod     = GetCallerMethodName();
                var millisecondsDelay = DelayForMethod.ContainsKey(currentMethod) ? DelayForMethod[currentMethod] : DEFAULT_DELAY_MILLISECONDS;

                var cts = new CancellationTokenSource(millisecondsDelay);
                var getSellingManagerSoldListingsResponses = await salerecordIds.ProcessInBatchAsync(this.EbayServiceLowLevel.MaxThreadsCount, async x => await this.EbayServiceLowLevel.GetSellngManagerOrderByRecordNumberAsync( x, mark, cts.Token ).ConfigureAwait(false)).ConfigureAwait(false);

                var sellingManagerSoldListingsResponses = getSellingManagerSoldListingsResponses as IList <GetSellingManagerSoldListingsResponse> ?? getSellingManagerSoldListingsResponses.ToList();
                sellingManagerSoldListingsResponses.SkipErrorsAndDo(x => EbayLogger.LogTraceInnerError(this.CreateMethodCallInfo(methodParameters, mark, x.Errors.ToJson())), new List <ResponseError> {
                    EbayErrors.EbayPixelSizeError, EbayErrors.LvisBlockedError, EbayErrors.UnsupportedListingType, EbayErrors.RequestedUserIsSuspended
                });
                sellingManagerSoldListingsResponses.ThrowOnError();

                if (!sellingManagerSoldListingsResponses.Any())
                {
                    return(seleRecordsIdsFilteredOnlyExisting);
                }

                var allReceivedOrders = sellingManagerSoldListingsResponses.SelectMany(x => x.Orders).ToList();

                var alllReceivedOrdersDistinct = allReceivedOrders.Distinct(new OrderEqualityComparerByRecordId()).Select(x => x.SaleRecordID).ToList();

                seleRecordsIdsFilteredOnlyExisting = (from s in saleRecordsIDs join d in alllReceivedOrdersDistinct on s equals d select s).ToList();

                var resultSaleRecordNumbersBriefInfo = seleRecordsIdsFilteredOnlyExisting.ToJson();
                EbayLogger.LogTraceEnded(this.CreateMethodCallInfo(methodParameters, mark, methodResult: resultSaleRecordNumbersBriefInfo));

                return(seleRecordsIdsFilteredOnlyExisting);
            }
            catch (Exception exception)
            {
                var ebayException = new EbayCommonException(string.Format("Error. Was called:{0}", this.CreateMethodCallInfo(methodParameters, mark)), exception);
                LogTraceException(ebayException.Message, ebayException);
                throw ebayException;
            }
        }
示例#3
0
 public async Task <IEnumerable <Models.GetSellerListResponse.Item> > GetProductsDetailsAsync()
 {
     try
     {
         return(await this.GetProductsDetailsAsync(this._ebayWorkingStart, DateTime.Now).ConfigureAwait(false));
     }
     catch (Exception exception)
     {
         var ebayException = new EbayCommonException(string.Format("Error. Was called with()"), exception);
         LogTraceException(ebayException.Message, ebayException);
         throw ebayException;
     }
 }
示例#4
0
        public async Task <IEnumerable <Models.GetSellerListResponse.Item> > GetProductsDetailsAsync(DateTime createTimeFromStart, DateTime createTimeFromTo)
        {
            var mark             = new Guid().ToString();
            var methodParameters = string.Format("CreateTimeFrom:{0},CreateTimeTo:{1}", createTimeFromStart, createTimeFromTo);

            try
            {
                var products = new List <Models.GetSellerListResponse.Item>();

                var quartalsStartList = GetListOfTimeRanges(createTimeFromStart, createTimeFromTo).ToList();

                var getSellerListAsyncTasks = new List <Task <GetSellerListResponse> >();

                var sellerListAsync = await this.EbayServiceLowLevel.GetSellerListAsync(quartalsStartList[0], quartalsStartList[1].AddSeconds(-1), GetSellerListTimeRangeEnum.StartTime, mark).ConfigureAwait(false);

                sellerListAsync.SkipErrorsAndDo(c => EbayLogger.LogTraceInnerError(this.CreateMethodCallInfo(methodParameters, mark, sellerListAsync.Errors.ToJson())), new List <ResponseError> {
                    EbayErrors.RequestedUserIsSuspended
                });
                sellerListAsync.ThrowOnError();

                products.AddRange(sellerListAsync.Items);

                for (var i = 1; i < quartalsStartList.Count - 1; i++)
                {
                    getSellerListAsyncTasks.Add(this.EbayServiceLowLevel.GetSellerListAsync(quartalsStartList[i], quartalsStartList[i + 1].AddSeconds(-1), GetSellerListTimeRangeEnum.StartTime, mark));
                }

                await Task.WhenAll(getSellerListAsyncTasks).ConfigureAwait(false);

                products.AddRange(getSellerListAsyncTasks.SelectMany(task => task.Result.Items).ToList());

                var productsDetails = await this.GetItemsAsync(products, mark).ConfigureAwait(false);

                var productsDetailsDevidedByVariations = SplitByVariationsOrReturnEmpty(productsDetails);

                return(productsDetailsDevidedByVariations);
            }
            catch (Exception exception)
            {
                var ebayException = new EbayCommonException(string.Format("Error. Was called with({0},{1})", createTimeFromStart, createTimeFromTo), exception);
                LogTraceException(ebayException.Message, ebayException);
                throw ebayException;
            }
        }
示例#5
0
        public async Task <IEnumerable <Order> > GetOrdersAsync(DateTime dateFrom, DateTime dateTo)
        {
            var methodParameters = string.Format("{{dateFrom:{0},dateTo:{1}}}", dateFrom, dateTo);
            var mark             = Guid.NewGuid().ToString();

            try
            {
                EbayLogger.LogTraceStarted(this.CreateMethodCallInfo(methodParameters, mark));

                var daysBeforeNow = (DateTime.UtcNow - dateFrom).Days;
                if (daysBeforeNow > MaximumTimeWindowAllowed)
                {
                    var daysExcess = daysBeforeNow - MaximumTimeWindowAllowed;
                    var amendement = -1 * daysExcess;
                    dateFrom.AddDays(amendement);
                }

                List <Order> result;
                if (dateFrom > dateTo)
                {
                    result = new List <Order>();
                }
                else
                {
                    var getOrdersResponse = await this.EbayServiceLowLevel.GetOrdersAsync(dateFrom, dateTo, GetOrdersTimeRangeEnum.ModTime, mark).ConfigureAwait(false);

                    getOrdersResponse.SkipErrorsAndDo(c => EbayLogger.LogTraceInnerError(this.CreateMethodCallInfo(methodParameters, mark, getOrdersResponse.Errors.ToJson())), new List <ResponseError> {
                        EbayErrors.RequestedUserIsSuspended
                    });
                    getOrdersResponse.ThrowOnError();
                    result = getOrdersResponse.Orders;
                }

                EbayLogger.LogTraceEnded(this.CreateMethodCallInfo(methodParameters, mark, methodResult: result.ToJson()));
                return(result);
            }
            catch (Exception exception)
            {
                var ebayException = new EbayCommonException(string.Format("Error. Was called:{0}", this.CreateMethodCallInfo(methodParameters, mark)), exception);
                LogTraceException(ebayException.Message, ebayException);
                throw ebayException;
            }
        }
示例#6
0
        public async Task <IEnumerable <Item> > GetActiveProductsAsync(CancellationToken ct, bool getOnlyGtcDuration = false)
        {
            var methodParameters = new Func <string>(() => string.Format("{{getOnlyGtcDuration: {0}, cancellationTokenIsCancelled:{1}}}", getOnlyGtcDuration, ct.IsCancellationRequested));
            var mark             = Guid.NewGuid().ToString();

            try
            {
                if (ct.IsCancellationRequested)
                {
                    return(null);
                }

                EbayLogger.LogTraceStarted(this.CreateMethodCallInfo(methodParameters(), mark));

                var sellerListsAsync = await this.EbayServiceLowLevel.GetSellerListCustomResponsesWithMaxThreadsRestrictionAsync(ct, DateTime.UtcNow, DateTime.UtcNow.AddDays(Maxtimerange), GetSellerListTimeRangeEnum.EndTime, mark).ConfigureAwait(false)
                                       ?? new List <GetSellerListCustomResponse>();

                var getSellerListCustomResponses = sellerListsAsync as IList <GetSellerListCustomResponse> ?? sellerListsAsync.ToList();
                getSellerListCustomResponses.SkipErrorsAndDo(c => EbayLogger.LogTraceInnerError(this.CreateMethodCallInfo(methodParameters(), mark, c.Errors.ToJson())), new List <ResponseError> {
                    EbayErrors.RequestedUserIsSuspended
                });
                getSellerListCustomResponses.ThrowOnError();

                if (getOnlyGtcDuration)
                {
                    getSellerListCustomResponses.ForEach(x => x.Items = x.Items.Where(y => y.Duration.ToUpper().Equals(DurationGTC)).ToList());
                }

                var items = getSellerListCustomResponses.SelectMany(x => x.ItemsSplitedByVariations);

                var resultSellerListBriefInfo = items.ToJson();
                EbayLogger.LogTraceEnded(this.CreateMethodCallInfo(methodParameters(), mark, methodResult: resultSellerListBriefInfo));

                return(items);
            }
            catch (Exception exception)
            {
                var ebayException = new EbayCommonException(string.Format("Error. Was called:{0}", this.CreateMethodCallInfo(methodParameters(), mark)), exception);
                LogTraceException(ebayException.Message, ebayException);
                throw ebayException;
            }
        }
示例#7
0
        public async Task <List <string> > GetOrdersIdsAsync(params string[] sourceOrdersIds)
        {
            var methodParameters = sourceOrdersIds.ToJson();
            var mark             = Guid.NewGuid().ToString();

            try
            {
                EbayLogger.LogTraceStarted(this.CreateMethodCallInfo(methodParameters, mark));

                if (sourceOrdersIds == null || !sourceOrdersIds.Any())
                {
                    return(new List <string>());
                }

                var getOrdersResponse = await this.EbayServiceLowLevel.GetOrdersAsync(mark, sourceOrdersIds).ConfigureAwait(false);

                getOrdersResponse.SkipErrorsAndDo(c => EbayLogger.LogTraceInnerError(this.CreateMethodCallInfo(methodParameters, mark, getOrdersResponse.Errors.ToJson())), new List <ResponseError> {
                    EbayErrors.EbayPixelSizeError, EbayErrors.LvisBlockedError, EbayErrors.UnsupportedListingType, EbayErrors.RequestedUserIsSuspended
                });
                getOrdersResponse.ThrowOnError();

                if (getOrdersResponse.Orders == null)
                {
                    return(new List <string>());
                }

                var distinctOrdersIds = getOrdersResponse.Orders.Distinct(new OrderEqualityComparerById()).Select(x => x.GetOrderId(false)).ToList();

                var existsOrders = (from s in sourceOrdersIds join d in distinctOrdersIds on s equals d select s).ToList();

                EbayLogger.LogTraceEnded(this.CreateMethodCallInfo(methodParameters, mark, methodResult: existsOrders.ToJson()));

                return(existsOrders);
            }
            catch (Exception exception)
            {
                var ebayException = new EbayCommonException(string.Format("Error. Was called:{0}", this.CreateMethodCallInfo(methodParameters, mark)), exception);
                LogTraceException(ebayException.Message, ebayException);
                throw ebayException;
            }
        }
示例#8
0
        protected async Task <IEnumerable <UpdateInventoryResponse> > UpdateInventoryCallEconomAlgorithmAsync(IEnumerable <UpdateInventoryRequest> products)
        {
            var updateInventoryRequests = products as IList <UpdateInventoryRequest> ?? products.ToList();
            var methodParameters        = updateInventoryRequests.ToJson();
            var mark = Guid.NewGuid().ToString();

            try
            {
                EbayLogger.LogTraceStarted(this.CreateMethodCallInfo(methodParameters, mark));
                updateInventoryRequests.ForEach(x => x.Quantity = x.Quantity < 0 ? 0 : x.Quantity);
                var exceptions = new List <Exception>();

                #region revise inventory status
                var reviseInventoryStatusResponses           = new List <InventoryStatusResponse>();
                var reviseInventoryStatusResponsesWithErrors = new List <InventoryStatusResponse>();
                try
                {
                    var reviseInventoryStatusRequests = updateInventoryRequests.Select(x => new InventoryStatusRequest {
                        ItemId = x.ItemId, Sku = x.Sku, Quantity = x.Quantity
                    }).ToList();
                    var temp = await this.EbayServiceLowLevel.ReviseInventoriesStatusAsync(reviseInventoryStatusRequests, mark).ConfigureAwait(false);

                    reviseInventoryStatusResponses = temp.ToList();
                    var reviseInventoryStatusResponsesList = temp.ToList();
                    EbayLogger.LogTrace(this.CreateMethodCallInfo(methodParameters, mark, methodResult: reviseInventoryStatusResponsesList.ToJson(), additionalInfo: "ReviseInventoryStatus responses."));

                    var errorsToSkip = new List <ResponseError> {
                        EbayErrors.EbayPixelSizeError, EbayErrors.LvisBlockedError, EbayErrors.UnsupportedListingType, EbayErrors.ReplaceableValue, EbayErrors.VariationLevelSKUAndItemIDShouldBeSupplied
                    };
                    var errorsFromResponsesThatMustBeSkipped = reviseInventoryStatusResponsesList.CollectAllErros().Where(x => errorsToSkip.Any(y => y.ErrorCode == x.ErrorCode)).ToList();
                    EbayLogger.LogTraceInnerErrorSkipped(this.CreateMethodCallInfo(methodParameters, mark, errorsFromResponsesThatMustBeSkipped.ToJson()));

                    reviseInventoryStatusResponsesList.SkipErrorsAndDo(null, errorsFromResponsesThatMustBeSkipped);

                    reviseInventoryStatusResponsesWithErrors = reviseInventoryStatusResponsesList.GetOnlyResponsesWithErrors(null).ToList();
                    var reviseInventoryStatusResponsesWithoutErrors = reviseInventoryStatusResponsesList.GetOnlyResponsesWithoutErrors(null);

                    var items = reviseInventoryStatusResponsesWithoutErrors.Where(y => y.Items != null).SelectMany(x => x.Items).ToList();
                    EbayLogger.LogTrace(this.CreateMethodCallInfo(methodParameters, mark, methodResult: items.ToJson(), additionalInfo: "Products updated without errors with helpof ReviseInventoryStatus."));
                    EbayLogger.LogTrace(this.CreateMethodCallInfo(methodParameters, mark, methodResult: reviseInventoryStatusResponsesWithErrors.ToJson(), additionalInfo: "Products updated with errors with helpof ReviseInventoryStatus. Will be retryed with ReviseFixedPriseItem."));
                }
                catch (Exception exception)
                {
                    var ebayException = new EbayCommonException(string.Format("Error:{0})", this.CreateMethodCallInfo(methodParameters, mark)), exception);
                    LogTraceException(ebayException.Message, ebayException);
                    exceptions.Add(exception);
                }
                #endregion

                #region revise fixed price item
                var reviseFixedPriceItemResponses = new List <ReviseFixedPriceItemResponse>();
                if (reviseInventoryStatusResponsesWithErrors.Any())
                {
                    try
                    {
                        var reviseInventoryStatusResponsesWithErrorsItems = reviseInventoryStatusResponsesWithErrors.Where(y => y.RequestedItems != null).SelectMany(y => y.RequestedItems).ToList();
                        var productsToReviseFixedPriceItem = updateInventoryRequests.Where(x => x != null).Where(x => reviseInventoryStatusResponsesWithErrorsItems.Any(z => z.ItemId == x.ItemId && z.Sku == x.Sku)).ToList();
                        var reviseFixedPriceItemRequests   = productsToReviseFixedPriceItem.Select(x => new ReviseFixedPriceItemRequest()
                        {
                            ConditionID = x.ConditionID, IsVariation = x.IsVariation, ItemId = x.ItemId, Quantity = x.Quantity, Sku = x.Sku
                        });
                        EbayLogger.LogTrace(this.CreateMethodCallInfo(reviseFixedPriceItemRequests.ToJson(), mark, additionalInfo: "Trying to update products with helpof ReviseFixedPriseItem."));

                        var reviseFixedPriceItemResponsesEnumerable = await reviseFixedPriceItemRequests.ProcessInBatchAsync(this.EbayServiceLowLevel.MaxThreadsCount, async x =>
                        {
                            ReviseFixedPriceItemResponse res = null;
                            var IsItVariationItem            = false;
                            var repeatCount = 0;
                            await ActionPolicies.GetAsyncShort.Do(async() =>
                            {
                                if (repeatCount == 0)
                                {
                                    IsItVariationItem = x.IsVariation;
                                }

                                res = await this.EbayServiceLowLevel.ReviseFixedPriceItemAsync(x, mark, IsItVariationItem).ConfigureAwait(false);

                                if (res.Item == null)
                                {
                                    res.Item = new Models.ReviseFixedPriceItemResponse.Item();
                                }

                                res.Item.Sku    = x.Sku;
                                res.Item.ItemId = x.ItemId;

                                res.SkipErrorsAndDo(c => EbayLogger.LogTraceInnerError(this.CreateMethodCallInfo(methodParameters, mark, res.Errors.ToJson())), new List <ResponseError> {
                                    EbayErrors.EbayPixelSizeError, EbayErrors.LvisBlockedError, EbayErrors.UnsupportedListingType, EbayErrors.ReplaceableValue
                                });

                                if (res.Errors == null || !res.Errors.Any())
                                {
                                    return;
                                }

                                if (res.Errors != null && res.Errors.Exists(y => y.ErrorCode == "21916585"))
                                {
                                    IsItVariationItem = !IsItVariationItem;
                                }

                                if (repeatCount++ < 3)
                                {
                                    throw new EbayCommonException(string.Format("Error.{0}", this.CreateMethodCallInfo(x.ToJson(), mark, res.Errors.ToJson())));
                                }
                            }).ConfigureAwait(false);

                            return(res);
                        }).ConfigureAwait(false);

                        reviseFixedPriceItemResponses = reviseFixedPriceItemResponsesEnumerable.ToList();
                        reviseFixedPriceItemResponses.ThrowOnError(x => (x.Select(y => ( ReviseFixedPriceItemResponse )y).ToList()).ToJson());

                        var items = reviseFixedPriceItemResponses.Where(y => y.Item != null).Select(x => x.Item).ToList();
                        EbayLogger.LogTrace(this.CreateMethodCallInfo(methodParameters, mark, methodResult: items.ToJson()));
                    }
                    catch (Exception exc)
                    {
                        exceptions.Add(exc);
                    }
                }
                #endregion

                if (exceptions.Count > 0)
                {
                    throw new AggregateException(exceptions);
                }

                var updateInventoryResponses = new List <UpdateInventoryResponse>();
                updateInventoryResponses.AddRange(reviseInventoryStatusResponses.ToUpdateInventoryResponses().ToList());
                updateInventoryResponses.AddRange(reviseFixedPriceItemResponses.ToUpdateInventoryResponses().ToList());

                EbayLogger.LogTraceEnded(this.CreateMethodCallInfo(methodParameters, mark, methodResult: updateInventoryResponses.ToJson()));

                return(updateInventoryResponses);
            }
            catch (Exception exception)
            {
                var ebayException = new EbayCommonException(string.Format("Error:{0})", this.CreateMethodCallInfo(methodParameters, mark)), exception);
                LogTraceException(ebayException.Message, ebayException);
                throw ebayException;
            }
        }
示例#9
0
        protected async Task <IEnumerable <UpdateInventoryResponse> > UpdateInventoryCallExpensiveAlgorithmAsync(IEnumerable <UpdateInventoryRequest> products)
        {
            var updateInventoryRequests = products as IList <UpdateInventoryRequest> ?? products.ToList();
            var methodParameters        = updateInventoryRequests.ToJson();
            var mark = Guid.NewGuid().ToString();

            try
            {
                EbayLogger.LogTraceStarted(this.CreateMethodCallInfo(methodParameters, mark));

                updateInventoryRequests.ForEach(x => x.Quantity = x.Quantity < 0 ? 0 : x.Quantity);

                var inventoryStatusRequests = updateInventoryRequests.Where(x => x.Quantity > 0).Select(x => new InventoryStatusRequest {
                    ItemId = x.ItemId, Sku = x.Sku, Quantity = x.Quantity
                }).ToList();
                var reviseFixedPriceItemRequests = updateInventoryRequests.Where(x => x.Quantity == 0).Select(x => new ReviseFixedPriceItemRequest {
                    ItemId = x.ItemId, Sku = x.Sku, Quantity = x.Quantity, ConditionID = x.ConditionID, IsVariation = x.IsVariation
                }).ToList();

                var exceptions = new List <Exception>();

                var updateProductsResponses = Enumerable.Empty <InventoryStatusResponse>();
                try
                {
                    updateProductsResponses = await this.ReviseInventoriesStatusAsync(inventoryStatusRequests, mark).ConfigureAwait(false);
                }
                catch (Exception exc)
                {
                    exceptions.Add(exc);
                }

                var updateFixedPriceItemResponses = Enumerable.Empty <ReviseFixedPriceItemResponse>();
                try
                {
                    updateFixedPriceItemResponses = await this.ReviseFixePriceItemsAsync(reviseFixedPriceItemRequests, mark).ConfigureAwait(false);
                }
                catch (Exception exc)
                {
                    exceptions.Add(exc);
                }

                if (exceptions.Count > 0)
                {
                    throw new AggregateException(exceptions);
                }

                var updateInventoryResponses = new List <UpdateInventoryResponse>();
                updateInventoryResponses.AddRange(updateProductsResponses.ToUpdateInventoryResponses().ToList());
                updateInventoryResponses.AddRange(updateFixedPriceItemResponses.ToUpdateInventoryResponses().ToList());

                EbayLogger.LogTraceEnded(this.CreateMethodCallInfo(methodParameters, mark, methodResult: updateInventoryResponses.ToJson()));

                return(updateInventoryResponses);
            }
            catch (Exception exception)
            {
                var ebayException = new EbayCommonException(string.Format("Error:{0})", this.CreateMethodCallInfo(methodParameters, mark)), exception);
                LogTraceException(ebayException.Message, ebayException);
                throw ebayException;
            }
        }