internal static CorsProperties ReadCorsPropertiesFromXml(XElement element) { if (element == null) { return(null); } CorsProperties corsProperties = new CorsProperties(); IEnumerable <XElement> source = element.Descendants("CorsRule"); corsProperties.CorsRules = (from rule in source select new CorsRule { AllowedOrigins = rule.Element("AllowedOrigins").Value.Split(new char[1] { ',' }).ToList(), AllowedMethods = (CorsHttpMethods)Enum.Parse(typeof(CorsHttpMethods), rule.Element("AllowedMethods").Value, ignoreCase: true), AllowedHeaders = rule.Element("AllowedHeaders").Value.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(), ExposedHeaders = rule.Element("ExposedHeaders").Value.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(), MaxAgeInSeconds = int.Parse(rule.Element("MaxAgeInSeconds").Value, CultureInfo.InvariantCulture) }).ToList(); return(corsProperties); }
public ServiceProperties(LoggingProperties logging = null, MetricsProperties hourMetrics = null, MetricsProperties minuteMetrics = null, CorsProperties cors = null) { Logging = logging; HourMetrics = hourMetrics; MinuteMetrics = minuteMetrics; Cors = cors; }
private static XElement GenerateCorsXml(CorsProperties cors) { CommonUtility.AssertNotNull("cors", cors); IList <CorsRule> corsRules = cors.CorsRules; XElement xElement = new XElement("Cors"); foreach (CorsRule item in corsRules) { if (item.AllowedOrigins.Count < 1 || item.AllowedMethods == CorsHttpMethods.None || item.MaxAgeInSeconds < 0) { throw new InvalidOperationException("A CORS rule must contain at least one allowed origin and allowed method, and MaxAgeInSeconds cannot have a value less than zero."); } XElement content = new XElement("CorsRule", new XElement("AllowedOrigins", string.Join(",", item.AllowedOrigins.ToArray())), new XElement("AllowedMethods", item.AllowedMethods.ToString().Replace(" ", string.Empty).ToUpperInvariant()), new XElement("ExposedHeaders", string.Join(",", item.ExposedHeaders.ToArray())), new XElement("AllowedHeaders", string.Join(",", item.AllowedHeaders.ToArray())), new XElement("MaxAgeInSeconds", item.MaxAgeInSeconds)); xElement.Add(content); } return(xElement); }
/// <summary> /// Parse Cors Rules from OLD XSCL to PSCorsRule Array /// </summary> /// <param name="corsProperties">Cors Rules from XSCL</param> /// <returns>PSCorsRule Array</returns> public static PSCorsRule[] ParseCorsRules(XTable.CorsProperties corsProperties) { List <PSCorsRule> ruleList = new List <PSCorsRule>(); if (corsProperties != null && corsProperties.CorsRules != null) { foreach (var corsRule in corsProperties.CorsRules) { PSCorsRule psCorsRule = new PSCorsRule(); psCorsRule.AllowedOrigins = ListToArray(corsRule.AllowedOrigins); psCorsRule.AllowedHeaders = ListToArray(corsRule.AllowedHeaders); psCorsRule.ExposedHeaders = ListToArray(corsRule.ExposedHeaders); psCorsRule.AllowedMethods = ConvertCorsHttpMethodToString(corsRule.AllowedMethods); psCorsRule.MaxAgeInSeconds = corsRule.MaxAgeInSeconds; ruleList.Add(psCorsRule); } } return(ruleList.ToArray()); }