/// <summary> /// GetDiscovererListAsync /// </summary> /// <param name="previousPage"></param> /// <returns>DiscovererInfo</returns> public async Task <PagedResult <DiscovererInfo> > GetDiscovererListAsync(PagedResult <DiscovererInfo> previousPage = null) { var pageResult = new PagedResult <DiscovererInfo>(); try { var discovererModel = new DiscovererQueryApiModel(); var applicationModel = new ApplicationRegistrationQueryApiModel(); var discoverers = new DiscovererListApiModel(); if (string.IsNullOrEmpty(previousPage?.ContinuationToken)) { discoverers = await _registryService.QueryDiscoverersAsync(discovererModel, _commonHelper.PageLengthSmall); if (!string.IsNullOrEmpty(discoverers.ContinuationToken)) { pageResult.PageCount = 2; } } else { discoverers = await _registryService.ListDiscoverersAsync(previousPage.ContinuationToken, _commonHelper.PageLengthSmall); if (string.IsNullOrEmpty(discoverers.ContinuationToken)) { pageResult.PageCount = previousPage.PageCount; } else { pageResult.PageCount = previousPage.PageCount + 1; } } if (discoverers != null && discoverers.Items.Any()) { foreach (var disc in discoverers.Items) { var discoverer = await _registryService.GetDiscovererAsync(disc.Id); var info = new DiscovererInfo { DiscovererModel = discoverer, HasApplication = false, ScanStatus = (discoverer.Discovery == DiscoveryMode.Off) || (discoverer.Discovery == null) ? false : true }; applicationModel.DiscovererId = discoverer.Id; var applications = await _registryService.QueryApplicationsAsync(applicationModel, 1); if (applications != null) { info.HasApplication = true; } pageResult.Results.Add(info); } if (previousPage != null) { previousPage.Results.AddRange(pageResult.Results); pageResult.Results = previousPage.Results; } pageResult.ContinuationToken = discoverers.ContinuationToken; pageResult.PageSize = _commonHelper.PageLengthSmall; pageResult.RowCount = pageResult.Results.Count; } else { pageResult.Error = "No Discoveres Found"; } } catch (UnauthorizedAccessException) { pageResult.Error = "Unauthorized access: Bad User Access Denied."; } catch (Exception e) { _logger.Warning(e, "Can not get discoverers as list"); pageResult.Error = e.Message; } return(pageResult); }
/// <summary> /// GetDiscovererListAsync /// </summary> /// <param name="previousPage"></param> /// <returns>DiscovererInfo</returns> public async Task <PagedResult <DiscovererInfo> > GetDiscovererListAsync(PagedResult <DiscovererInfo> previousPage = null, bool getNextPage = false) { var pageResult = new PagedResult <DiscovererInfo>(); try { var discovererModel = new DiscovererQueryApiModel(); var applicationModel = new ApplicationRegistrationQueryApiModel(); var discoverers = new DiscovererListApiModel(); if (!getNextPage || string.IsNullOrEmpty(previousPage?.ContinuationToken)) { discoverers = await _registryService.QueryDiscoverersAsync(discovererModel, _commonHelper.PageLengthSmall); } else { discoverers = await _registryService.ListDiscoverersAsync(previousPage.ContinuationToken, _commonHelper.PageLengthSmall); } if (discoverers != null) { if (discoverers.Items != null && discoverers.Items.Any()) { foreach (var disc in discoverers.Items) { var discoverer = await _registryService.GetDiscovererAsync(disc.Id); var info = new DiscovererInfo { DiscovererModel = discoverer, HasApplication = false, ScanStatus = (discoverer.Discovery == DiscoveryMode.Off) || (discoverer.Discovery == null) ? false : true }; applicationModel.DiscovererId = discoverer.Id; var applications = await _registryService.QueryApplicationsAsync(applicationModel, 1); if (applications != null) { info.HasApplication = true; } pageResult.Results.Add(info); } } } if (previousPage != null && getNextPage) { previousPage.Results.AddRange(pageResult.Results); pageResult.Results = previousPage.Results; } pageResult.ContinuationToken = discoverers.ContinuationToken; } catch (UnauthorizedAccessException) { pageResult.Error = "Unauthorized access: Bad User Access Denied."; } catch (ResourceInvalidStateException) { pageResult.Error = "IotHubQuotaExceeded. Send and Receive operations are blocked for this hub until the next UTC day."; } catch (Exception e) { var message = "Cannot get discoverers as list"; _logger.Warning(e, message); pageResult.Error = message; } return(pageResult); }