コード例 #1
0
        /// <summary>
        /// GetApplicationListAsync
        /// </summary>
        /// <returns>ApplicationInfoApiModel</returns>
        public async Task <PagedResult <ApplicationInfoApiModel> > GetApplicationListAsync()
        {
            var pageResult = new PagedResult <ApplicationInfoApiModel>();

            try {
                var applicationModel = new ApplicationRegistrationQueryApiModel();
                var applications     = await _registryService.QueryAllApplicationsAsync(applicationModel);

                if (applications != null)
                {
                    foreach (var application in applications)
                    {
                        pageResult.Results.Add(application);
                    }
                }
            }
            catch (Exception e) {
                _logger.Warning("Can not get applications 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);
        }
コード例 #2
0
        /// <summary>
        /// GetApplicationListAsync
        /// </summary>
        /// <param name="previousPage"></param>
        /// <returns>ApplicationInfoApiModel</returns>
        public async Task <PagedResult <ApplicationInfoApiModel> > GetApplicationListAsync(PagedResult <ApplicationInfoApiModel> previousPage = null)
        {
            var pageResult = new PagedResult <ApplicationInfoApiModel>();

            try {
                var query = new ApplicationRegistrationQueryApiModel {
                    IncludeNotSeenSince = true
                };
                var applications = new ApplicationInfoListApiModel();

                if (string.IsNullOrEmpty(previousPage?.ContinuationToken))
                {
                    applications = await _registryService.QueryApplicationsAsync(query, _commonHelper.PageLength);

                    if (!string.IsNullOrEmpty(applications.ContinuationToken))
                    {
                        pageResult.PageCount = 2;
                    }
                }
                else
                {
                    applications = await _registryService.ListApplicationsAsync(previousPage.ContinuationToken, _commonHelper.PageLength);

                    if (string.IsNullOrEmpty(applications.ContinuationToken))
                    {
                        pageResult.PageCount = previousPage.PageCount;
                    }
                    else
                    {
                        pageResult.PageCount = previousPage.PageCount + 1;
                    }
                }

                if (applications != null)
                {
                    foreach (var app in applications.Items)
                    {
                        var application = (await _registryService.GetApplicationAsync(app.ApplicationId)).Application;
                        pageResult.Results.Add(application);
                    }
                }
                if (previousPage != null)
                {
                    previousPage.Results.AddRange(pageResult.Results);
                    pageResult.Results = previousPage.Results;
                }

                pageResult.ContinuationToken = applications.ContinuationToken;
                pageResult.PageSize          = _commonHelper.PageLength;
                pageResult.RowCount          = pageResult.Results.Count;
            }
            catch (UnauthorizedAccessException) {
                pageResult.Error = "Unauthorized access: Bad User Access Denied.";
            }
            catch (Exception e) {
                _logger.Warning(e, "Can not get applications list");
                pageResult.Error = e.Message;
            }
            return(pageResult);
        }
コード例 #3
0
ファイル: Registry.cs プロジェクト: ytechie/Industrial-IoT
        /// <summary>
        /// GetDiscovererListAsync
        /// </summary>
        /// <returns>DiscovererInfo</returns>
        public async Task <PagedResult <DiscovererInfo> > GetDiscovererListAsync()
        {
            var pageResult = new PagedResult <DiscovererInfo>();

            try {
                var discovererModel  = new DiscovererQueryApiModel();
                var applicationModel = new ApplicationRegistrationQueryApiModel();
                var discoverers      = await _registryService.QueryAllDiscoverersAsync(discovererModel);

                if (discoverers != null)
                {
                    if (discoverers.Count() > 0)
                    {
                        foreach (var discoverer in discoverers)
                        {
                            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.QueryAllApplicationsAsync(applicationModel);

                            if (applications != null)
                            {
                                info.HasApplication = true;
                            }
                            pageResult.Results.Add(info);
                        }
                    }
                    else
                    {
                        pageResult.Results.Add(new DiscovererInfo {
                            DiscovererModel = new DiscovererApiModel {
                                Id = "No Discoveres Found"
                            }
                        });
                    }
                }
            }
            catch (Exception e) {
                Trace.TraceWarning("Can not get discoverers as list");
                var errorMessage = string.Concat(e.Message, e.InnerException?.Message ?? "--", e?.StackTrace ?? "--");
                Trace.TraceWarning(errorMessage);
                pageResult.Results.Add(new DiscovererInfo {
                    DiscovererModel = new DiscovererApiModel {
                        Id = e.Message
                    }
                });
            }

            pageResult.PageSize  = 10;
            pageResult.RowCount  = pageResult.Results.Count;
            pageResult.PageCount = (int)Math.Ceiling((decimal)pageResult.RowCount / 10);
            return(pageResult);
        }
コード例 #4
0
        /// <summary>
        /// Find applications
        /// </summary>
        /// <param name="service"></param>
        /// <param name="query"></param>
        /// <returns></returns>
        public static async Task <IEnumerable <ApplicationInfoApiModel> > QueryAllApplicationsAsync(
            this IRegistryServiceApi service, ApplicationRegistrationQueryApiModel query)
        {
            var registrations = new List <ApplicationInfoApiModel>();
            var result        = await service.QueryApplicationsAsync(query, null);

            registrations.AddRange(result.Items);
            while (result.ContinuationToken != null)
            {
                result = await service.ListApplicationsAsync(result.ContinuationToken, null);

                registrations.AddRange(result.Items);
            }
            return(registrations);
        }
コード例 #5
0
        /// <inheritdoc/>
        public async Task <ApplicationInfoListApiModel> QueryApplicationsAsync(
            ApplicationRegistrationQueryApiModel query, int?pageSize, CancellationToken ct)
        {
            var request = _httpClient.NewRequest($"{_serviceUri}/v2/applications/query",
                                                 _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 <ApplicationInfoListApiModel>());
        }
コード例 #6
0
        public async Task <ApplicationInfoListApiModel> GetFilteredListOfApplicationsAsync(
            [FromBody][Required] ApplicationRegistrationQueryApiModel 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 _applications.QueryApplicationsAsync(
                query.ToServiceModel(), pageSize);

            return(result.ToApiModel());
        }
コード例 #7
0
 /// <summary>
 /// Convert to service model
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public static ApplicationRegistrationQueryModel ToServiceModel(
     this ApplicationRegistrationQueryApiModel model)
 {
     if (model == null)
     {
         return(null);
     }
     return(new ApplicationRegistrationQueryModel {
         ApplicationType = (IIoT.OpcUa.Core.Models.ApplicationType?)model.ApplicationType,
         ApplicationUri = model.ApplicationUri,
         ProductUri = model.ProductUri,
         ApplicationName = model.ApplicationName,
         Locale = model.Locale,
         Capability = model.Capability,
         SiteOrGatewayId = model.SiteOrGatewayId,
         IncludeNotSeenSince = model.IncludeNotSeenSince,
         GatewayServerUri = model.GatewayServerUri,
         DiscovererId = model.DiscovererId,
         DiscoveryProfileUri = model.DiscoveryProfileUri
     });
 }
コード例 #8
0
        /// <summary>
        /// Notify page change
        /// </summary>
        /// <param name="page"></param>
        /// <returns></returns>
        public async Task PagerPageChangedAsync(int page)
        {
            CommonHelper.Spinner = "loader-big";
            StateHasChanged();
            DiscovererList = CommonHelper.UpdatePage(RegistryHelper.GetDiscovererListAsync, page, DiscovererList, ref _pagedDiscovererList, CommonHelper.PageLengthSmall);
            NavigationManager.NavigateTo(NavigationManager.BaseUri + "discoverers/" + page);
            foreach (var discoverer in _pagedDiscovererList.Results)
            {
                discoverer.DiscovererModel = await RegistryService.GetDiscovererAsync(discoverer.DiscovererModel.Id);

                discoverer.ScanStatus = discoverer.DiscovererModel.Discovery != DiscoveryMode.Off && discoverer.DiscovererModel.Discovery != null;
                var applicationModel = new ApplicationRegistrationQueryApiModel {
                    DiscovererId = discoverer.DiscovererModel.Id
                };
                var applications = await RegistryService.QueryApplicationsAsync(applicationModel, 1);

                if (applications != null)
                {
                    discoverer.HasApplication = true;
                }
            }
            CommonHelper.Spinner = string.Empty;
            StateHasChanged();
        }
コード例 #9
0
        /// <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);
        }
コード例 #10
0
        /// <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);
        }