private string CheckAndJoinAllowedMethods(string[] allowedMethods)
        {
            if (allowedMethods == null)
            {
                return(string.Empty);
            }

            StringBuilder sb = new StringBuilder();

            foreach (var method in allowedMethods)
            {
                if (sb.Length > 0)
                {
                    sb.Append(',');
                }

                XTable.CorsHttpMethods allowedCorsMethod = XTable.CorsHttpMethods.None;
                if (Enum.TryParse <XTable.CorsHttpMethods>(method, ignoreCase: true, out allowedCorsMethod))
                {
                    sb.Append(allowedCorsMethod);
                }
                else
                {
                    throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Resources.InvalidHTTPMethod, method));
                }
            }

            return(sb.ToString().ToUpperInvariant());
        }
示例#2
0
        /// <summary>
        /// Parse CorsHttpMethods from OLD XSCL to String Array
        /// </summary>
        /// <param name="methods">CorsHttpMethods from XSCL</param>
        /// <returns>String Array</returns>
        private static string[] ConvertCorsHttpMethodToString(XTable.CorsHttpMethods methods)
        {
            List <string> methodList = new List <string>();

            foreach (XTable.CorsHttpMethods methodValue in Enum.GetValues(typeof(XTable.CorsHttpMethods)).Cast <XTable.CorsHttpMethods>())
            {
                if (methodValue != XTable.CorsHttpMethods.None && (methods & methodValue) != 0)
                {
                    methodList.Add(methodValue.ToString());
                }
            }

            return(methodList.ToArray());
        }
        private void SetAllowedMethods(XTable.CorsRule corsRule, string[] allowedMethods)
        {
            corsRule.AllowedMethods = XTable.CorsHttpMethods.None;

            if (null != allowedMethods)
            {
                foreach (var method in allowedMethods)
                {
                    XTable.CorsHttpMethods allowedCorsMethod = XTable.CorsHttpMethods.None;
                    if (Enum.TryParse <XTable.CorsHttpMethods>(method, true, out allowedCorsMethod))
                    {
                        corsRule.AllowedMethods |= allowedCorsMethod;
                    }
                    else
                    {
                        throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Resources.InvalidHTTPMethod, method));
                    }
                }
            }
        }