/// <summary> /// Create the configuration object /// </summary> public object Create(object parent, object configContext, XmlNode section) { XmlElement caConfigurationElement = section.SelectSingleNode("./*[local-name() = 'ca']") as XmlElement; CertificationAuthorityConfiguration caConfiguration = new CertificationAuthorityConfiguration(); if (caConfigurationElement != null) { caConfiguration.AutoApprove = caConfigurationElement?.Attributes["autoApprove"]?.Value == "true"; caConfiguration.Name = caConfigurationElement?.Attributes["cn"]?.Value; caConfiguration.ServerName = caConfigurationElement?.Attributes["serverName"]?.Value; } var endpoints = section.SelectNodes("./*[local-name() = 'endpoint']/*[local-name() = 'add']"); List <ServiceEndpointOptions> epOptions = new List <ServiceEndpointOptions>(); foreach (XmlElement xel in endpoints) { ServiceEndpointCapabilities caps = ServiceEndpointCapabilities.None; foreach (var si in xel.Attributes["capabilities"]?.Value?.Split(' ') ?? new String[0]) { caps |= (ServiceEndpointCapabilities)Enum.Parse(typeof(ServiceEndpointCapabilities), si); } epOptions.Add(new ServiceEndpointOptions() { BaseUrl = xel.InnerText.Split(' '), ServiceType = (ServiceEndpointType)Enum.Parse(typeof(ServiceEndpointType), xel.Attributes["type"]?.Value), Capabilities = caps, }); } // Configuration return(new AmiConfiguration() { CaConfiguration = caConfiguration, Endpoints = epOptions }); }
/// <summary> /// Creates a new api endpoint behavior /// </summary> public ApiEndpointProviderShim(Type behavior, ServiceEndpointType apiType, String url, ServiceEndpointCapabilities capabilities) { this.ApiType = apiType; this.Url = new string[] { url }; this.Capabilities = capabilities; this.BehaviorType = behavior; }