Пример #1
0
        private async Task <GetSellerListCustomResponse> GetSellerListCustomResponseAsync(CancellationToken ct, DateTime timeFrom, DateTime timeTo, GetSellerListTimeRangeEnum getSellerListTimeRangeEnum, int recordsPerPage, int pageNumber, string mark)
        {
            if (ct.IsCancellationRequested)
            {
                return(null);
            }

            var body = this.CreateGetSellerListCustomRequestBody(timeFrom, timeTo, getSellerListTimeRangeEnum, recordsPerPage, pageNumber);

            var headers = CreateGetSellerListRequestHeadersWithApiCallName();

            GetSellerListCustomResponse getSellerListResponse = null;

            await ActionPolicies.SubmitAsync.Do(async() =>
            {
                var webRequest = await this.CreateEbayStandartPostRequestAsync(this._endPoint, headers, body, mark, ct).ConfigureAwait(false);

                using (var memStream = await this._webRequestServices.GetResponseStreamAsync(webRequest, mark, ct).ConfigureAwait(false))
                    getSellerListResponse = new EbayGetSallerListCustomResponseParser().Parse(memStream);
            }).ConfigureAwait(false);

            return(getSellerListResponse);
        }
Пример #2
0
        public async Task <IEnumerable <GetSellerListCustomResponse> > GetSellerListCustomResponsesWithMaxThreadsRestrictionAsync(CancellationToken ct, DateTime timeFrom, DateTime timeTo, GetSellerListTimeRangeEnum getSellerListTimeRangeEnum, string mark)
        {
            if (ct.IsCancellationRequested)
            {
                return(null);
            }

            var       recordsPerPage = this._itemsPerPage;
            const int pageNumber     = 1;

            var getSellerListResponse = await this.GetSellerListCustomResponseAsync(ct, timeFrom, timeTo, getSellerListTimeRangeEnum, recordsPerPage, pageNumber, mark).ConfigureAwait(false);

            var pages = new List <int>();

            var getSellerListCustomResponses = new List <GetSellerListCustomResponse> {
                getSellerListResponse
            };

            if (getSellerListResponse != null && getSellerListResponse.Errors == null)
            {
                if (getSellerListResponse.PaginationResult.TotalNumberOfPages > 1)
                {
                    for (var i = 2; i <= getSellerListResponse.PaginationResult.TotalNumberOfPages; i++)
                    {
                        pages.Add(i);
                    }
                    var getSellerListCustomResponsesTemp = await pages.ProcessInBatchAsync(this.MaxThreadsCount, async x => await this.GetSellerListCustomResponseAsync( ct, timeFrom, timeTo, getSellerListTimeRangeEnum, recordsPerPage, x, mark ).ConfigureAwait(false)).ConfigureAwait(false);

                    getSellerListCustomResponses.AddRange(getSellerListCustomResponsesTemp);
                }
            }

            return(getSellerListCustomResponses.Where(x => x != null).ToList());
        }
Пример #3
0
 private string CreateGetSellerListCustomRequestBody(DateTime timeFrom, DateTime timeTo, GetSellerListTimeRangeEnum getSellerListTimeRangeEnum, int recordsPerPage, int pageNumber)
 {
     return(string.Format(
                "<?xml version=\"1.0\" encoding=\"utf-8\"?><GetSellerListRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\"><RequesterCredentials><eBayAuthToken>{0}</eBayAuthToken></RequesterCredentials><{5}From>{1}</{5}From><{5}To>{2}</{5}To><IncludeVariations>true</IncludeVariations><Pagination ComplexType=\"PaginationType\"><EntriesPerPage>{3}</EntriesPerPage><PageNumber>{4}</PageNumber></Pagination>  <DetailLevel>ReturnAll</DetailLevel><OutputSelector>ItemArray.Item.BuyItNowPrice,ItemArray.Item.OutOfStockControl,PaginationResult,HasMoreItems,ItemArray.Item.SKU,ItemArray.Item.Variations,ItemArray.Item.Quantity,ItemArray.Item.Title,ItemArray.Item.ItemID,ItemArray.Item.SellingStatus.CurrentPrice,ItemArray.Item.SellingStatus.QuantitySold,ItemArray.Item.Site,ItemArray.Item.ListingDuration,ItemArray.Item.ConditionID,ItemArray.Item.ConditionDescription</OutputSelector> </GetSellerListRequest>​​​",
                this._userCredentials.Token,
                timeFrom.ToStringUtcIso8601(),
                timeTo.ToStringUtcIso8601(),
                recordsPerPage,
                pageNumber,
                getSellerListTimeRangeEnum));
 }
Пример #4
0
        public async Task <GetSellerListCustomResponse> GetSellerListCustomAsync(DateTime timeFrom, DateTime timeTo, GetSellerListTimeRangeEnum getSellerListTimeRangeEnum, string mark)
        {
            var items = new GetSellerListCustomResponse();

            var recordsPerPage = this._itemsPerPage;
            var pageNumber     = 1;
            var hasMoreItems   = false;

            do
            {
                var body = this.CreateGetSellerListCustomRequestBody(timeFrom, timeTo, getSellerListTimeRangeEnum, recordsPerPage, pageNumber);

                var headers = CreateGetSellerListRequestHeadersWithApiCallName();

                await ActionPolicies.GetAsync.Do(async() =>
                {
                    var webRequest = await this.CreateEbayStandartPostRequestAsync(this._endPoint, headers, body, mark, CancellationToken.None).ConfigureAwait(false);

                    using (var memStream = await this._webRequestServices.GetResponseStreamAsync(webRequest, mark, CancellationToken.None).ConfigureAwait(false))
                    {
                        var getSellerListResponse = new EbayGetSallerListCustomResponseParser().Parse(memStream);
                        if (getSellerListResponse != null)
                        {
                            if (getSellerListResponse.Errors != null)
                            {
                                items.Errors = getSellerListResponse.Errors;
                                return;
                            }
                            hasMoreItems = getSellerListResponse.HasMoreItems;
                            if (getSellerListResponse.Items != null)
                            {
                                items.Items.AddRange(getSellerListResponse.Items);
                            }
                        }
                    }
                }).ConfigureAwait(false);

                pageNumber++;
            } while(hasMoreItems);

            return(items);
        }
Пример #5
0
 private string CreateGetSellerListRequestBody(DateTime timeFrom, DateTime timeTo, GetSellerListTimeRangeEnum getSellerListTimeRangeEnum, int recordsPerPage, int pageNumber)
 {
     return(string.Format(
                "<?xml version=\"1.0\" encoding=\"utf-8\"?><GetSellerListRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\"><RequesterCredentials><eBayAuthToken>{0}</eBayAuthToken></RequesterCredentials><{5}From>{1}</{5}From><{5}To>{2}</{5}To><Pagination><EntriesPerPage>{3}</EntriesPerPage><PageNumber>{4}</PageNumber></Pagination><DetailLevel>ReturnAll</DetailLevel></GetSellerListRequest>​​",
                this._userCredentials.Token,
                timeFrom.ToStringUtcIso8601(),
                timeTo.ToStringUtcIso8601(),
                recordsPerPage,
                pageNumber,
                getSellerListTimeRangeEnum));
 }