/// <summary> /// GetGatewayListAsync /// </summary> /// <returns>GatewayApiModel</returns> public async Task <PagedResult <GatewayApiModel> > GetGatewayListAsync() { var pageResult = new PagedResult <GatewayApiModel>(); try { var gatewayModel = new GatewayQueryApiModel(); var gateways = await _registryService.QueryAllGatewaysAsync(gatewayModel); if (gateways != null) { foreach (var gateway in gateways) { pageResult.Results.Add(gateway); } } } catch (Exception e) { _logger.Warning("Can not get gateways list"); var errorMessage = string.Concat(e.Message, e.InnerException?.Message ?? "--", e?.StackTrace ?? "--"); _logger.Warning(errorMessage); pageResult.Error = e.Message; } pageResult.PageSize = 10; pageResult.RowCount = pageResult.Results.Count; pageResult.PageCount = (int)Math.Ceiling((decimal)pageResult.RowCount / 10); return(pageResult); }
/// <summary> /// GetGatewayListAsync /// </summary> /// <param name="previousPage"></param> /// <returns>GatewayApiModel</returns> public async Task <PagedResult <GatewayApiModel> > GetGatewayListAsync(PagedResult <GatewayApiModel> previousPage = null) { var pageResult = new PagedResult <GatewayApiModel>(); try { var gatewayModel = new GatewayQueryApiModel(); var gateways = new GatewayListApiModel(); if (string.IsNullOrEmpty(previousPage?.ContinuationToken)) { gateways = await _registryService.QueryGatewaysAsync(gatewayModel, _commonHelper.PageLength); if (!string.IsNullOrEmpty(gateways.ContinuationToken)) { pageResult.PageCount = 2; } } else { gateways = await _registryService.ListGatewaysAsync(previousPage.ContinuationToken, _commonHelper.PageLength); if (string.IsNullOrEmpty(gateways.ContinuationToken)) { pageResult.PageCount = previousPage.PageCount; } else { pageResult.PageCount = previousPage.PageCount + 1; } } if (gateways != null) { foreach (var gw in gateways.Items) { var gateway = (await _registryService.GetGatewayAsync(gw.Id)).Gateway; pageResult.Results.Add(gateway); } } if (previousPage != null) { previousPage.Results.AddRange(pageResult.Results); pageResult.Results = previousPage.Results; } pageResult.ContinuationToken = gateways.ContinuationToken; pageResult.PageSize = _commonHelper.PageLength; pageResult.RowCount = pageResult.Results.Count; } catch (UnauthorizedAccessException) { pageResult.Error = "Unauthorized access: Bad User Access Denied."; } catch (Exception e) { var message = "Cannot get gateways list"; _logger.Warning(e, message); pageResult.Error = message; } return(pageResult); }
/// <summary> /// Convert to service model /// </summary> /// <param name="model"></param> /// <returns></returns> public static GatewayQueryModel ToServiceModel( this GatewayQueryApiModel model) { if (model == null) { return(null); } return(new GatewayQueryModel { SiteId = model.SiteId, Connected = model.Connected }); }
/// <inheritdoc/> public async Task <GatewayListApiModel> QueryGatewaysAsync( GatewayQueryApiModel query, int?pageSize, CancellationToken ct) { var uri = new UriBuilder($"{_serviceUri}/v2/gateways/query"); var request = _httpClient.NewRequest(uri.Uri, _resourceId); if (pageSize != null) { request.AddHeader(HttpHeader.MaxItemCount, pageSize.ToString()); } request.SetContent(query); var response = await _httpClient.PostAsync(request, ct).ConfigureAwait(false); response.Validate(); return(response.GetContent <GatewayListApiModel>()); }
/// <summary> /// Find publishers /// </summary> /// <param name="service"></param> /// <param name="query"></param> /// <param name="ct"></param> /// <returns></returns> public static async Task <IEnumerable <GatewayApiModel> > QueryAllGatewaysAsync( this IRegistryServiceApi service, GatewayQueryApiModel query, CancellationToken ct = default) { var registrations = new List <GatewayApiModel>(); var result = await service.QueryGatewaysAsync(query, null, ct); registrations.AddRange(result.Items); while (result.ContinuationToken != null) { result = await service.ListGatewaysAsync(result.ContinuationToken, null, ct); registrations.AddRange(result.Items); } return(registrations); }
public async Task <GatewayListApiModel> GetFilteredListOfGatewayAsync( [FromQuery][Required] GatewayQueryApiModel query, [FromQuery] int?pageSize) { if (query == null) { throw new ArgumentNullException(nameof(query)); } if (Request.Headers.ContainsKey(HttpHeader.MaxItemCount)) { pageSize = int.Parse(Request.Headers[HttpHeader.MaxItemCount] .FirstOrDefault()); } var result = await _Gateways.QueryGatewaysAsync( query.ToServiceModel(), pageSize); return(result.ToApiModel()); }