Esempio n. 1
0
        public void ListRefundsOfCharge_Success()
        {
            _createChargeRequest.CardDetails = _workingCard;
            _createChargeRequest.Capture     = true;
            _createChargeRequest.Amount      = 10000;

            ApiResponse <Charge> response = _chargeService.CreateCharge(_createChargeRequest);

            RefundChargeRequest refundRequest = new RefundChargeRequest();

            refundRequest.ChargeId = response.Content.Id;
            refundRequest.Amount   = 100;

            ApiResponse <Refund> refundResponse = _refundService.RefundCharge(refundRequest);

            _refundService.RefundCharge(refundRequest);
            _refundService.RefundCharge(refundRequest);

            PagedApiResponse <Refund> apiResponse = _refundService.ListRefundsForCharge(new ListRefundsForChargeRequest()
            {
                ChargeId = refundRequest.ChargeId
            });

            Assert.IsTrue(apiResponse.Content.Count == 3);
        }
Esempio n. 2
0
        public IActionResult PagedData <T>(List <T> data, int total)
        {
            var response = new PagedApiResponse <T>
            {
                Success = true,
                Data    = data,
                Total   = total
            };

            return(Json(response));
        }
        public void ListChages_PagedBefore_Success()
        {
            _createChargeRequest.CardDetails = _workingCard;
            Charge             createChargeResponse = _service.CreateCharge(_createChargeRequest).Content;
            ListChargesRequest request      = new ListChargesRequest();
            DateTime           beforeFilter = DateTime.Now.ToUniversalTime();

            request.Before = beforeFilter;

            PagedApiResponse <Charge> charges = _service.ListCharges(request);

            Assert.IsFalse(charges.IsError);
            Assert.IsFalse(charges.Content.Any(c => c.Id == createChargeResponse.Id)); // charge should be missing because of pagination
        }
        public void ListCharges_Success()
        {
            _createChargeRequest.CardDetails = _workingCard;
            Charge createChargeResponse = _service.CreateCharge(_createChargeRequest).Content;

            _service.CreateCharge(_createChargeRequest);
            _service.CreateCharge(_createChargeRequest);

            ListChargesRequest        request = new ListChargesRequest();
            PagedApiResponse <Charge> charges = _service.ListCharges(request);

            Assert.IsFalse(charges.IsError);
            Assert.IsTrue(charges.Content.Count >= 3);
        }
Esempio n. 5
0
        public AccountLegalEntitiesControllerTestsFixture()
        {
            Query = new GetAccountLegalEntitiesQuery {
                PageSize = 1000, PageNumber = 1
            };
            Mediator             = new Mock <IMediator>();
            AccountLegalEntities = new PagedApiResponse <AccountLegalEntity>();
            Response             = new GetAccountLegalEntitiesResponse {
                AccountLegalEntities = AccountLegalEntities
            };

            Mediator.Setup(m => m.SendAsync(Query)).ReturnsAsync(Response);

            Controller = new AccountLegalEntitiesController(Mediator.Object);
        }
        public void ListCustomers_PagedBefore_Success()
        {
            _createCustomerRequest.CardDetails = _cardDetails;
            ApiResponse <Customer> createCustomerResponse = _customerService.CreateCustomer(_createCustomerRequest);

            ListCustomersRequest request      = new ListCustomersRequest();
            DateTime             beforeFilter = DateTime.Now.ToUniversalTime();

            request.Before = beforeFilter;

            PagedApiResponse <Customer> customers = _customerService.ListCustomers(request);

            Assert.IsFalse(customers.IsError);
            Assert.IsFalse(customers.Content.Any(c => c.Id == createCustomerResponse.Content.Id)); // customer should be missing because of pagination
        }
        public void ListCustomers_Success()
        {
            _createCustomerRequest.CardDetails = _cardDetails;

            ApiResponse <Customer> createCustomerResponse = _customerService.CreateCustomer(_createCustomerRequest);

            _customerService.CreateCustomer(_createCustomerRequest);
            _customerService.CreateCustomer(_createCustomerRequest);

            ListCustomersRequest        request   = new ListCustomersRequest();
            PagedApiResponse <Customer> customers = _customerService.ListCustomers(request);

            Assert.IsFalse(customers.IsError);
            Assert.IsTrue(customers.Content.Count >= 3);
        }
Esempio n. 8
0
        protected PagedApiResponse <ResponseType> GetPagedApiResponse <RequestType, ResponseType>(RequestType request)
            where RequestType : RequestBase, new()
            where ResponseType : class, new()

        {
            PagedApiResponse <ResponseType> apiResponse  = new PagedApiResponse <ResponseType>();
            HttpResponseMessage             httpResponse = null;

            switch (request.HttpMethod)
            {
            case "GET":
            {
                httpResponse = _apiClient.GetAsync(request.Uri).Result;
                break;
            }
            }

            if (httpResponse != null)
            {
                string  responseString = httpResponse.Content.ReadAsStringAsync().Result;
                JObject json           = JObject.Parse(responseString);

                if (httpResponse.IsSuccessStatusCode)
                {
                    string arrayName = typeof(ResponseType).Name.ToLower() + "s";
                    apiResponse.Meta    = JsonConvert.DeserializeObject <Meta>(json["meta"].ToString());
                    apiResponse.Content = JsonConvert.DeserializeObject <List <ResponseType> >(json[arrayName].ToString());
                }
                else
                {
                    apiResponse.Error         = new StartApiErrorResponse();
                    apiResponse.Error.Type    = json["error"]["type"].ToString();
                    apiResponse.Error.Message = json["error"]["message"].ToString();
                    apiResponse.Error.Code    = json["error"]["code"].ToString();
                    apiResponse.Error.Extras  = json["error"]["extras"].ToString();
                }
            }

            return(apiResponse);
        }
Esempio n. 9
0
        public ReferenceDataApiClientTestFixtures WithSearchPublicSectorResult(
            string searchTerm,
            int pageNumber,
            int pageSize,
            params PublicSectorOrganisation[] publicSectorOrganisations)
        {
            var data = new PagedApiResponse <PublicSectorOrganisation>
            {
                Data = new List <PublicSectorOrganisation>()
            };

            foreach (var publicSectorOrganisation in publicSectorOrganisations)
            {
                data.Data.Add(publicSectorOrganisation);
            }

            HttpClientMock
            .Setup(c => c.GetAsync(It.Is <string>(s => s == BuildSearchPublicSectorUrl(searchTerm, pageNumber, pageSize)), true))
            .Callback <string, bool>((url, exceptionOnNotFound) => CalledUrls.Add(url))
            .ReturnsAsync(() => JsonConvert.SerializeObject(data));

            return(this);
        }
        public PagedApiResponse <Charge> ListCharges(ListChargesRequest request)
        {
            PagedApiResponse <Charge> response = GetPagedApiResponse <ListChargesRequest, Charge>(request);

            return(response);
        }
Esempio n. 11
0
        public PagedApiResponse <Customer> ListCustomers(ListCustomersRequest request)
        {
            PagedApiResponse <Customer> response = GetPagedApiResponse <ListCustomersRequest, Customer>(request);

            return(response);
        }
		/// <summary>
		/// Gets the items matching filter.
		/// </summary>
		/// <param name="filter">The filter.</param>
		/// <param name="startPage">The first page number to query.</param>
		/// <param name="pageLimit">The max number of pages to query.</param>
		/// <param name="mark">use it to simplify navigation inside log, allows to view call ierarchy</param>
		/// <returns>Items matching supplied filter.</returns>
		/// <seealso href="http://developer.channeladvisor.com/display/cadn/GetFilteredInventoryItemList"/>
		public async Task< PagedApiResponse< InventoryItemResponse > > GetFilteredItemsAsync( ItemsFilter filter, int startPage, int pageLimit, Mark mark = null )
		{
			if( mark.IsBlank() )
				mark = Mark.CreateNew();

			try
			{
				ChannelAdvisorLogger.LogStarted( this.CreateMethodCallInfo( mark : mark, additionalInfo : this.AdditionalLogInfo(), methodParameters : filter.ToJson() ) );
				filter.Criteria.PageSize = 100;
				filter.Criteria.PageNumber = ( startPage > 0 ) ? startPage - 1 : 1;

				var items = new List< InventoryItemResponse >();
				for( var iteration = 0; iteration < pageLimit; iteration++ )
				{
					filter.Criteria.PageNumber += 1;

					var itemResponse = await AP.CreateQueryAsync( ExtensionsInternal.CreateMethodCallInfo( this.AdditionalLogInfo ) ).Get( async () =>
					{
						ChannelAdvisorLogger.LogTraceRetryStarted( this.CreateMethodCallInfo( mark : mark, additionalInfo : this.AdditionalLogInfo(), methodParameters : !this.LogDetailsEnum.HasFlag( LogDetailsEnum.LogParametersAndResultForRetry ) ? null : filter.ToJson() ) );
						var getFilteredInventoryItemListResponse = await this._client.GetFilteredInventoryItemListAsync( this._credentials, this.AccountId, filter.Criteria, filter.DetailLevel, filter.SortField, filter.SortDirection )
							.ConfigureAwait( false );
						ChannelAdvisorLogger.LogTraceRetryEnd( this.CreateMethodCallInfo( mark : mark, methodResult : !this.LogDetailsEnum.HasFlag( LogDetailsEnum.LogParametersAndResultForRetry ) ? null : getFilteredInventoryItemListResponse.ToJson(), additionalInfo : this.AdditionalLogInfo(), methodParameters : !this.LogDetailsEnum.HasFlag( LogDetailsEnum.LogParametersAndResultForRetry ) ? null : filter.ToJson() ) );
						return getFilteredInventoryItemListResponse;
					}
						).ConfigureAwait( false );

					if( !this.IsRequestSuccessful( itemResponse.GetFilteredInventoryItemListResult ) )
						continue;

					var pageItems = itemResponse.GetFilteredInventoryItemListResult.ResultData;
					if( pageItems == null )
					{
						var pagedApiResponse = new PagedApiResponse< InventoryItemResponse >( items, filter.Criteria.PageNumber, true );
						ChannelAdvisorLogger.LogEnd( this.CreateMethodCallInfo( mark : mark, notes : "PageResponse", methodResult : pagedApiResponse.ToJson(), additionalInfo : this.AdditionalLogInfo(), methodParameters : filter.ToJson() ) );
						return pagedApiResponse;
					}

					items.AddRange( pageItems );
					if( pageItems.Length == 0 || pageItems.Length < filter.Criteria.PageSize )
					{
						var pagedApiResponse = new PagedApiResponse< InventoryItemResponse >( items, filter.Criteria.PageNumber, true );
						ChannelAdvisorLogger.LogEnd( this.CreateMethodCallInfo( mark : mark, notes : "PageResponse", methodResult : pagedApiResponse.ToJson(), additionalInfo : this.AdditionalLogInfo(), methodParameters : filter.ToJson() ) );
						return pagedApiResponse;
					}
				}

				var apiResponse = new PagedApiResponse< InventoryItemResponse >( items, filter.Criteria.PageNumber, false );
				ChannelAdvisorLogger.LogEnd( this.CreateMethodCallInfo( mark : mark, methodResult : apiResponse.ToJson(), additionalInfo : this.AdditionalLogInfo(), methodParameters : filter.ToJson() ) );
				return apiResponse;
			}
			catch( Exception exception )
			{
				var channelAdvisorException = new ChannelAdvisorException( this.CreateMethodCallInfo( mark : mark, additionalInfo : this.AdditionalLogInfo() ), exception );
				ChannelAdvisorLogger.LogTraceException( channelAdvisorException );
				throw channelAdvisorException;
			}
		}
Esempio n. 13
0
        public async Task <PagedApiResponse <string> > GetFilteredSkusAsync(ItemsFilter filter, int startPage, int pageLimit, Mark mark = null)
        {
            if (mark.IsBlank())
            {
                mark = Mark.CreateNew();
            }

            var parameters = new { filter, startPage, pageLimit };

            try
            {
                ChannelAdvisorLogger.LogStarted(this.CreateMethodCallInfo(mark: mark, additionalInfo: this.AdditionalLogInfo(), methodParameters: parameters.ToJson()));

                filter.Criteria.PageSize   = 100;
                filter.Criteria.PageNumber = (startPage > 0) ? startPage - 1 : 1;

                var skus = new List <string>();
                for (var iteration = 0; iteration < pageLimit; iteration++)
                {
                    filter.Criteria.PageNumber += 1;

                    var itemResponse = await AP.CreateQueryAsync(ExtensionsInternal.CreateMethodCallInfo(this.AdditionalLogInfo)).Get(async() =>
                    {
                        ChannelAdvisorLogger.LogTraceRetryStarted(this.CreateMethodCallInfo(mark: mark, additionalInfo: this.AdditionalLogInfo(), methodParameters: !this.LogDetailsEnum.HasFlag(LogDetailsEnum.LogParametersAndResultForRetry) ? null : parameters.ToJson()));
                        var getFilteredSkuListResponse = await this._client.GetFilteredSkuListAsync(this._credentials, this.AccountId, filter.Criteria, filter.SortField, filter.SortDirection)
                                                         .ConfigureAwait(false);
                        ChannelAdvisorLogger.LogTraceRetryEnd(this.CreateMethodCallInfo(mark: mark, methodResult: !this.LogDetailsEnum.HasFlag(LogDetailsEnum.LogParametersAndResultForRetry) ? null : getFilteredSkuListResponse.ToJson(), additionalInfo: this.AdditionalLogInfo(), methodParameters: !this.LogDetailsEnum.HasFlag(LogDetailsEnum.LogParametersAndResultForRetry) ? null : parameters.ToJson()));
                        return(getFilteredSkuListResponse);
                    }).ConfigureAwait(false);

                    ChannelAdvisorLogger.LogTrace(this.CreateMethodCallInfo(mark: mark, methodResult: !this.LogDetailsEnum.HasFlag(LogDetailsEnum.LogParametersAndReturnsForTrace) ? null : itemResponse.ToJson(), additionalInfo: this.AdditionalLogInfo(), methodParameters: !this.LogDetailsEnum.HasFlag(LogDetailsEnum.LogParametersAndReturnsForTrace) ? null : parameters.ToJson()));

                    if (!this.IsRequestSuccessful(itemResponse.GetFilteredSkuListResult))
                    {
                        continue;
                    }

                    var pageSkus = itemResponse.GetFilteredSkuListResult.ResultData;
                    if (pageSkus == null)
                    {
                        var pagedApiResponse = new PagedApiResponse <string>(skus, filter.Criteria.PageNumber, true);
                        ChannelAdvisorLogger.LogEnd(this.CreateMethodCallInfo(mark: mark, methodResult: pagedApiResponse.ToJson(), additionalInfo: this.AdditionalLogInfo(), methodParameters: parameters.ToJson()));
                        return(pagedApiResponse);
                    }

                    skus.AddRange(pageSkus);

                    if (pageSkus.Length == 0 || pageSkus.Length < filter.Criteria.PageSize)
                    {
                        var pagedApiResponse = new PagedApiResponse <string>(skus, filter.Criteria.PageNumber, true);
                        ChannelAdvisorLogger.LogEnd(this.CreateMethodCallInfo(mark: mark, methodResult: pagedApiResponse.ToJson(), additionalInfo: this.AdditionalLogInfo(), methodParameters: parameters.ToJson()));
                        return(pagedApiResponse);
                    }
                }

                var apiResponse = new PagedApiResponse <string>(skus, filter.Criteria.PageNumber, false);
                ChannelAdvisorLogger.LogTraceEnd(this.CreateMethodCallInfo(mark: mark, methodResult: apiResponse.ToJson(), additionalInfo: this.AdditionalLogInfo(), methodParameters: parameters.ToJson()));
                return(apiResponse);
            }
            catch (Exception exception)
            {
                var channelAdvisorException = new ChannelAdvisorException(this.CreateMethodCallInfo(mark: mark, additionalInfo: this.AdditionalLogInfo()), exception);
                ChannelAdvisorLogger.LogTraceException(channelAdvisorException);
                throw channelAdvisorException;
            }
        }
Esempio n. 14
0
        public void PreparePagination <T>(int offset, int limit, long total, string resource, PagedApiResponse <List <T> > response)
        {
            response.Total    = total;
            response.PageSize = limit;

            string queryString = string.Empty;
            string baseQuery   = $"api/{resource}";

            if (HttpContext.Request.QueryString.HasValue)
            {
                queryString = HttpContext.Request.QueryString.Value;
            }

            int tmpNextOffset = (offset + limit) + 1;

            if (tmpNextOffset <= total)
            {
                string nextPage = queryString.Replace($"{OffsetPattern}{offset}", $"{OffsetPattern}{tmpNextOffset}");
                response.Next = $"{baseQuery}{nextPage}";
            }

            int tmpPrevOffset = (offset - limit) - 1;

            if (tmpPrevOffset >= 0)
            {
                string prevPage = queryString.Replace($"{OffsetPattern}{offset}", $"{OffsetPattern}{tmpPrevOffset}");
                response.Prev = $"{baseQuery}{prevPage}";
            }

            int tmpTotalPageOffset = (int)(total - limit) + 1;

            if (total > 0)
            {
                string lastPage = queryString.Replace($"{OffsetPattern}{offset}", $"{OffsetPattern}{tmpTotalPageOffset}");
                response.Last = $"{baseQuery}{lastPage}";
            }

            string tmpFirstPage = queryString.Replace($"{OffsetPattern}{offset}", $"{OffsetPattern}0");

            response.First = $"{baseQuery}{tmpFirstPage}";
        }
        public PagedApiResponse <Refund> ListRefundsForCharge(ListRefundsForChargeRequest request)
        {
            PagedApiResponse <Refund> response = GetPagedApiResponse <ListRefundsForChargeRequest, Refund>(request);

            return(response);
        }