コード例 #1
0
        /// <summary>
        /// Create server model
        /// </summary>
        /// <param name="result"></param>
        /// <param name="hostAddress"></param>
        /// <param name="siteId"></param>
        /// <param name="gatewayId"></param>
        /// <param name="moduleId"></param>
        /// <param name="serializer"></param>
        /// <returns></returns>
        public static ApplicationRegistrationModel ToServiceModel(this DiscoveredEndpointModel result,
                                                                  string hostAddress, string siteId, string gatewayId, string moduleId,
                                                                  IJsonSerializer serializer)
        {
            var type = result.Description.Server.ApplicationType.ToServiceType() ??
                       ApplicationType.Server;
            var discovererId = DiscovererModelEx.CreateDiscovererId(gatewayId, moduleId);

            return(new ApplicationRegistrationModel {
                Application = new ApplicationInfoModel {
                    SiteId = siteId,
                    DiscovererId = discovererId,
                    ApplicationType = type,
                    ApplicationId = ApplicationInfoModelEx.CreateApplicationId(siteId ?? gatewayId,
                                                                               result.Description.Server.ApplicationUri, type), // TODO: Assign at onboarder and leave null
                    ProductUri = result.Description.Server.ProductUri,
                    ApplicationUri = result.Description.Server.ApplicationUri,
                    DiscoveryUrls = new HashSet <string>(result.Description.Server.DiscoveryUrls),
                    DiscoveryProfileUri = result.Description.Server.DiscoveryProfileUri,
                    HostAddresses = new HashSet <string> {
                        hostAddress
                    },
                    ApplicationName = result.Description.Server.ApplicationName.Text,
                    LocalizedNames = string.IsNullOrEmpty(result.Description.Server.ApplicationName.Locale) ?
                                     null : new Dictionary <string, string> {
                        [result.Description.Server.ApplicationName.Locale] =
                            result.Description.Server.ApplicationName.Text
                    },
                    NotSeenSince = null,
                    Capabilities = new HashSet <string>(result.Capabilities)
                },
                Endpoints = new List <EndpointRegistrationModel> {
                    new EndpointRegistrationModel {
                        SiteId = siteId,
                        DiscovererId = discovererId,
                        SupervisorId = null,
                        Id = null,
                        SecurityLevel = result.Description.SecurityLevel,
                        AuthenticationMethods = result.Description.UserIdentityTokens
                                                .ToServiceModel(serializer),
                        EndpointUrl = result.Description.EndpointUrl, // Reported
                        Endpoint = new EndpointModel {
                            Url = result.AccessibleEndpointUrl,       // Accessible
                            AlternativeUrls = new HashSet <string> {
                                result.AccessibleEndpointUrl,
                                result.Description.EndpointUrl,
                            },
                            Certificate = result.Description.ServerCertificate?.ToThumbprint(),
                            SecurityMode = result.Description.SecurityMode.ToServiceType() ??
                                           SecurityMode.None,
                            SecurityPolicy = result.Description.SecurityPolicyUri
                        }
                    }
                }
            });
        }
コード例 #2
0
        /// <summary>
        /// Create server model
        /// </summary>
        /// <param name="result"></param>
        /// <param name="hostAddress"></param>
        /// <param name="siteId"></param>
        /// <param name="supervisorId"></param>
        /// <returns></returns>
        public static ApplicationRegistrationModel ToServiceModel(this DiscoveredEndpointModel result,
                                                                  string hostAddress, string siteId, string supervisorId)
        {
            var type = result.Description.Server.ApplicationType.ToServiceType() ??
                       ApplicationType.Server;

            return(new ApplicationRegistrationModel {
                Application = new ApplicationInfoModel {
                    SiteId = siteId,
                    SupervisorId = supervisorId,
                    ApplicationType = type,
                    ApplicationId = ApplicationInfoModelEx.CreateApplicationId(
                        siteId ?? supervisorId, result.Description.Server.ApplicationUri, type),
                    ProductUri = result.Description.Server.ProductUri,
                    ApplicationUri = result.Description.Server.ApplicationUri,
                    DiscoveryUrls = new HashSet <string>(result.Description.Server.DiscoveryUrls),
                    DiscoveryProfileUri = result.Description.Server.DiscoveryProfileUri,
                    HostAddresses = new HashSet <string> {
                        hostAddress
                    },
                    ApplicationName = result.Description.Server.ApplicationName.Text,
                    Locale = result.Description.Server.ApplicationName.Locale,
                    NotSeenSince = null,
                    Certificate = result.Description.ServerCertificate,
                    Capabilities = new HashSet <string>(result.Capabilities)
                },
                Endpoints = new List <EndpointRegistrationModel> {
                    new EndpointRegistrationModel {
                        SiteId = siteId,
                        SupervisorId = supervisorId,
                        Certificate = result.Description.ServerCertificate,
                        SecurityLevel = result.Description.SecurityLevel,
                        AuthenticationMethods = result.Description.UserIdentityTokens.ToServiceModel(),
                        EndpointUrl = result.Description.EndpointUrl, // Reported
                        Endpoint = new EndpointModel {
                            Url = result.AccessibleEndpointUrl,       // Accessible
                            AlternativeUrls = new HashSet <string> {
                                result.AccessibleEndpointUrl,
                                result.Description.EndpointUrl,
                            },
                            SecurityMode = result.Description.SecurityMode.ToServiceType() ??
                                           SecurityMode.None,
                            SecurityPolicy = result.Description.SecurityPolicyUri
                        }
                    }
                }
            });
        }