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); }
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()); }
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)); }
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); }
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)); }