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