예제 #1
0
        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);
        }
예제 #2
0
 public ServiceProperties(LoggingProperties logging = null, MetricsProperties hourMetrics = null, MetricsProperties minuteMetrics = null, CorsProperties cors = null)
 {
     Logging       = logging;
     HourMetrics   = hourMetrics;
     MinuteMetrics = minuteMetrics;
     Cors          = cors;
 }
예제 #3
0
        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);
        }
예제 #4
0
        /// <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());
        }