private async Task <ServicePointInformation> GetServicePointLiveAsync(ClientInfo clientInfo, string pickupPointId) { var parameters = new Dictionary <string, string> { { "apikey", clientInfo.ApiKey }, { "countryCode", clientInfo.Country.ToString() }, { "servicePointId", pickupPointId }, }; string url = $"businesslocation/v1/servicepoint/findByServicePointId.json?{BuildQueryString(parameters)}"; HttpResponseMessage responseMessage = await CallAsync(() => Client.GetAsync(url), true); if (responseMessage == null) { _log.Error(new { message = "Service point fetch failed. Service response was NULL", pickupPointId }); return(null); } if (!responseMessage.IsSuccessStatusCode) { _log.Error(new { message = "Service point fetch failed. Service response status was not OK", responseMessage.StatusCode }); return(null); } ServicePointInformationRootDto dto = await ParseJsonAsync <ServicePointInformationRootDto>(responseMessage); if (dto.HasError || dto.ServicePointInformationResponse?.ServicePoints == null) { _log.Error(new { message = "Service point fetch failed.", pickupPointId, dto.ErrorMessage }); return(null); } return(_mapper.Map <ServicePointInformation>(dto.ServicePointInformationResponse.ServicePoints.FirstOrDefault())); }
public async Task <ServicePointInformation[]> GetAllServicePointsAsync(ClientInfo clientInfo, bool forceCacheRefresh = false) { string cacheKey = $"ServicePointList_{clientInfo.ApiKey}"; _log.Debug(new { message = "Get all service points", clientInfo, forceCacheRefresh }); ServicePointInformation[] result; if (!forceCacheRefresh) { result = _cacheHelper.Get <ServicePointInformation[]>(cacheKey); if (result != null && result.Any()) { _log.Debug($"Found {result.Length} service points in cache"); return(result); } } var parameters = new Dictionary <string, string> { { "apikey", clientInfo.ApiKey }, { "countryCode", clientInfo.Country.ToString() } }; string url = $"businesslocation/v1/servicepoint/getServicePointInformation.json?{BuildQueryString(parameters)}"; HttpResponseMessage responseMessage = await CallAsync(() => Client.GetAsync(url), true); if (responseMessage == null) { _log.Error("Get all service points failed. Service response was NULL"); return(new ServicePointInformation[0]); } if (!responseMessage.IsSuccessStatusCode) { _log.Error(new { message = "Get all service points failed. Service response status was not OK", responseMessage.StatusCode }); return(new ServicePointInformation[0]); } ServicePointInformationRootDto dto = await ParseJsonAsync <ServicePointInformationRootDto>(responseMessage); if (dto.HasError || dto.ServicePointInformationResponse?.ServicePoints == null) { _log.Error(new { message = "Get all service points failed. Service response was NULL" }); return(new ServicePointInformation[0]); } result = _mapper.Map <ServicePointInformation[]>(dto.ServicePointInformationResponse.ServicePoints); _cacheHelper.Insert(cacheKey, result, clientInfo.CacheTimeout); _log.Debug($"Found {result.Length} service points by API call"); return(result); }