Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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));
 }