public async Task <GetOrdersResponse> GetOrdersAsync(DateTime createTimeFrom, DateTime createTimeTo, GetOrdersTimeRangeEnum getOrdersTimeRangeEnum, string mark = "") { var orders = new GetOrdersResponse(); var totalRecords = 0; var recordsPerPage = this._itemsPerPage; var pageNumber = 1; var hasMoreOrders = false; do { var headers = CreateEbayGetOrdersRequestHeadersWithApiCallName(); var body = this.CreateGetOrdersRequestBody(createTimeFrom, createTimeTo, recordsPerPage, pageNumber, getOrdersTimeRangeEnum); await ActionPolicies.GetAsync.Do(async() => { var webRequest = await this.CreateEbayStandartPostRequestWithCertAsync(this._endPoint, headers, body, mark, CancellationToken.None).ConfigureAwait(false); using (var memStream = await this._webRequestServices.GetResponseStreamAsync(webRequest, mark, CancellationToken.None).ConfigureAwait(false)) { var pagination = new EbayPaginationResultResponseParser().Parse(memStream); if (pagination != null) { totalRecords = pagination.TotalNumberOfEntries; } var getOrdersResponseParsed = new EbayGetOrdersResponseParser().Parse(memStream); if (getOrdersResponseParsed != null) { if (getOrdersResponseParsed.Errors != null) { orders.Errors = getOrdersResponseParsed.Errors; return; } hasMoreOrders = getOrdersResponseParsed.HasMoreOrders; if (getOrdersResponseParsed.Orders != null) { orders.Orders.AddRange(getOrdersResponseParsed.Orders); } } } }).ConfigureAwait(false); pageNumber++; } while(hasMoreOrders); return(orders); }
private string CreateGetOrdersRequestBody(DateTime timeRangeFrom, DateTime timeRangeTo, int recordsPerPage, int pageNumber, GetOrdersTimeRangeEnum getOrdersTimeRangeEnum) { return(string.Format( "<?xml version=\"1.0\" encoding=\"utf-8\"?><GetOrdersRequest 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></GetOrdersRequest>", this._userCredentials.Token, timeRangeFrom.ToStringUtcIso8601(), timeRangeTo.ToStringUtcIso8601(), recordsPerPage, pageNumber, getOrdersTimeRangeEnum)); }