public static string UrlEncode(string str, Encoding e)
 {
     if (str == null)
     {
         return(null);
     }
     return(Encoding.ASCII.GetString(XmlaHttpUtility.UrlEncodeToBytes(str, e)));
 }
 public static byte[] UrlEncodeToBytes(string str)
 {
     if (str == null)
     {
         return(null);
     }
     return(XmlaHttpUtility.UrlEncodeToBytes(str, Encoding.UTF8));
 }
 public static string UrlEncode(byte[] bytes)
 {
     if (bytes == null)
     {
         return(null);
     }
     return(Encoding.ASCII.GetString(XmlaHttpUtility.UrlEncodeToBytes(bytes)));
 }
 public static byte[] UrlEncodeToBytes(byte[] bytes)
 {
     if (bytes == null)
     {
         return(null);
     }
     return(XmlaHttpUtility.UrlEncodeToBytes(bytes, 0, bytes.Length));
 }
 public static byte[] UrlDecodeToBytes(byte[] bytes)
 {
     if (bytes == null)
     {
         return(null);
     }
     return(XmlaHttpUtility.UrlDecodeToBytes(bytes, 0, (bytes != null) ? bytes.Length : 0));
 }
 public static byte[] UrlDecodeToBytes(string str, Encoding e)
 {
     if (str == null)
     {
         return(null);
     }
     return(XmlaHttpUtility.UrlDecodeToBytes(e.GetBytes(str)));
 }
 public static string UrlDecode(byte[] bytes, Encoding e)
 {
     if (bytes == null)
     {
         return(null);
     }
     return(XmlaHttpUtility.UrlDecode(bytes, 0, bytes.Length, e));
 }
 public static string UrlDecode(string str)
 {
     if (str == null)
     {
         return(null);
     }
     return(XmlaHttpUtility.UrlDecode(str, Encoding.UTF8));
 }
        private static string UrlDecodeInternal(byte[] bytes, int offset, int count, Encoding encoding)
        {
            if (!XmlaHttpUtility.ValidateUrlEncodingParameters(bytes, offset, count))
            {
                return(null);
            }
            XmlaHttpUtility.UrlDecoder urlDecoder = new XmlaHttpUtility.UrlDecoder(count, encoding);
            int i = 0;

            while (i < count)
            {
                int  num = offset + i;
                byte b   = bytes[num];
                if (b == 43)
                {
                    b = 32;
                    goto IL_E6;
                }
                if (b != 37 || i >= count - 2)
                {
                    goto IL_E6;
                }
                if (bytes[num + 1] == 117 && i < count - 5)
                {
                    int num2 = XmlaHttpUtility.HexToInt((char)bytes[num + 2]);
                    int num3 = XmlaHttpUtility.HexToInt((char)bytes[num + 3]);
                    int num4 = XmlaHttpUtility.HexToInt((char)bytes[num + 4]);
                    int num5 = XmlaHttpUtility.HexToInt((char)bytes[num + 5]);
                    if (num2 < 0 || num3 < 0 || num4 < 0 || num5 < 0)
                    {
                        goto IL_E6;
                    }
                    char ch = (char)(num2 << 12 | num3 << 8 | num4 << 4 | num5);
                    i += 5;
                    urlDecoder.AddChar(ch);
                }
                else
                {
                    int num6 = XmlaHttpUtility.HexToInt((char)bytes[num + 1]);
                    int num7 = XmlaHttpUtility.HexToInt((char)bytes[num + 2]);
                    if (num6 >= 0 && num7 >= 0)
                    {
                        b  = (byte)(num6 << 4 | num7);
                        i += 2;
                        goto IL_E6;
                    }
                    goto IL_E6;
                }
IL_ED:
                i++;
                continue;
IL_E6:
                urlDecoder.AddByte(b);
                goto IL_ED;
            }
            return(urlDecoder.GetString());
        }
 public static byte[] UrlEncodeToBytes(string str, Encoding e)
 {
     if (str == null)
     {
         return(null);
     }
     byte[] bytes = e.GetBytes(str);
     return(XmlaHttpUtility.UrlEncode(bytes, 0, bytes.Length, false));
 }
        private static string AddValueToUrlQuery(string url, string key, string value)
        {
            UriBuilder          uriBuilder          = new UriBuilder(url);
            NameValueCollection nameValueCollection = XmlaHttpUtility.ParseQueryString(uriBuilder.Query);

            nameValueCollection[key] = value;
            uriBuilder.Query         = nameValueCollection.ToString();
            return(uriBuilder.ToString());
        }
 private static byte[] UrlEncode(byte[] bytes, int offset, int count, bool alwaysCreateNewReturnValue)
 {
     byte[] array = XmlaHttpUtility.UrlEncode(bytes, offset, count);
     if (!alwaysCreateNewReturnValue || array == null || array != bytes)
     {
         return(array);
     }
     return((byte[])array.Clone());
 }
 private static string UrlEncodeNonAscii(string str, Encoding e)
 {
     if (string.IsNullOrEmpty(str))
     {
         return(str);
     }
     if (e == null)
     {
         e = Encoding.UTF8;
     }
     byte[] bytes  = e.GetBytes(str);
     byte[] bytes2 = XmlaHttpUtility.UrlEncodeNonAscii(bytes, 0, bytes.Length, false);
     return(Encoding.ASCII.GetString(bytes2));
 }
        private static string ExtractValueFromUrlQuery(string url, string key, out string value)
        {
            UriBuilder          uriBuilder          = new UriBuilder(url);
            NameValueCollection nameValueCollection = XmlaHttpUtility.ParseQueryString(uriBuilder.Query);

            value = nameValueCollection.Get(key);
            if (value != null)
            {
                nameValueCollection.Remove("SessionId");
                uriBuilder.Query = nameValueCollection.ToString();
                return(uriBuilder.ToString());
            }
            return(url);
        }
        public static string UrlPathEncode(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return(str);
            }
            int num = str.IndexOf('?');

            if (num >= 0)
            {
                return(XmlaHttpUtility.UrlPathEncode(str.Substring(0, num)) + str.Substring(num));
            }
            return(XmlaHttpUtility.UrlEncodeSpaces(XmlaHttpUtility.UrlEncodeNonAscii(str, Encoding.UTF8)));
        }
        private static byte[] UrlEncode(byte[] bytes, int offset, int count)
        {
            if (!XmlaHttpUtility.ValidateUrlEncodingParameters(bytes, offset, count))
            {
                return(null);
            }
            int num  = 0;
            int num2 = 0;

            for (int i = 0; i < count; i++)
            {
                char c = (char)bytes[offset + i];
                if (c == ' ')
                {
                    num++;
                }
                else if (!XmlaHttpUtility.IsUrlSafeChar(c))
                {
                    num2++;
                }
            }
            if (num == 0 && num2 == 0)
            {
                return(bytes);
            }
            byte[] array = new byte[count + num2 * 2];
            int    num3  = 0;

            for (int j = 0; j < count; j++)
            {
                byte b  = bytes[offset + j];
                char c2 = (char)b;
                if (XmlaHttpUtility.IsUrlSafeChar(c2))
                {
                    array[num3++] = b;
                }
                else if (c2 == ' ')
                {
                    array[num3++] = 43;
                }
                else
                {
                    array[num3++] = 37;
                    array[num3++] = (byte)XmlaHttpUtility.IntToHex(b >> 4 & 15);
                    array[num3++] = (byte)XmlaHttpUtility.IntToHex((int)(b & 15));
                }
            }
            return(array);
        }
            internal void FillFromString(string s, bool urlencoded, Encoding encoding)
            {
                int num = (s != null) ? s.Length : 0;

                for (int i = 0; i < num; i++)
                {
                    int num2 = i;
                    int num3 = -1;
                    while (i < num)
                    {
                        char c = s[i];
                        if (c == '=')
                        {
                            if (num3 < 0)
                            {
                                num3 = i;
                            }
                        }
                        else if (c == '&')
                        {
                            break;
                        }
                        i++;
                    }
                    string text = null;
                    string text2;
                    if (num3 >= 0)
                    {
                        text  = s.Substring(num2, num3 - num2);
                        text2 = s.Substring(num3 + 1, i - num3 - 1);
                    }
                    else
                    {
                        text2 = s.Substring(num2, i - num2);
                    }
                    if (urlencoded)
                    {
                        base.Add(XmlaHttpUtility.UrlDecode(text, encoding), XmlaHttpUtility.UrlDecode(text2, encoding));
                    }
                    else
                    {
                        base.Add(text, text2);
                    }
                    if (i == num - 1 && s[i] == '&')
                    {
                        base.Add(null, string.Empty);
                    }
                }
            }
        public static string HtmlDecode(string value)
        {
            if (string.IsNullOrEmpty(value))
            {
                return(value);
            }
            if (value.IndexOf('&') < 0)
            {
                return(value);
            }
            StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture);

            XmlaHttpUtility.HtmlDecode(value, stringWriter);
            return(stringWriter.ToString());
        }
            internal void FillFromEncodedBytes(byte[] bytes, Encoding encoding)
            {
                int num = (bytes != null) ? bytes.Length : 0;

                for (int i = 0; i < num; i++)
                {
                    int num2 = i;
                    int num3 = -1;
                    while (i < num)
                    {
                        byte b = bytes[i];
                        if (b == 61)
                        {
                            if (num3 < 0)
                            {
                                num3 = i;
                            }
                        }
                        else if (b == 38)
                        {
                            break;
                        }
                        i++;
                    }
                    string name;
                    string value;
                    if (num3 >= 0)
                    {
                        name  = XmlaHttpUtility.UrlDecode(bytes, num2, num3 - num2, encoding);
                        value = XmlaHttpUtility.UrlDecode(bytes, num3 + 1, i - num3 - 1, encoding);
                    }
                    else
                    {
                        name  = null;
                        value = XmlaHttpUtility.UrlDecode(bytes, num2, i - num2, encoding);
                    }
                    base.Add(name, value);
                    if (i == num - 1 && bytes[i] == 38)
                    {
                        base.Add(null, string.Empty);
                    }
                }
            }
        public static string UrlEncodeUnicode(string value)
        {
            if (value == null)
            {
                return(null);
            }
            int           length        = value.Length;
            StringBuilder stringBuilder = new StringBuilder(length);

            for (int i = 0; i < length; i++)
            {
                char c = value[i];
                if ((c & 'タ') == '\0')
                {
                    if (XmlaHttpUtility.IsUrlSafeChar(c))
                    {
                        stringBuilder.Append(c);
                    }
                    else if (c == ' ')
                    {
                        stringBuilder.Append('+');
                    }
                    else
                    {
                        stringBuilder.Append('%');
                        stringBuilder.Append(XmlaHttpUtility.IntToHex((int)(c >> 4 & '\u000f')));
                        stringBuilder.Append(XmlaHttpUtility.IntToHex((int)(c & '\u000f')));
                    }
                }
                else
                {
                    stringBuilder.Append("%u");
                    stringBuilder.Append(XmlaHttpUtility.IntToHex((int)(c >> 12 & '\u000f')));
                    stringBuilder.Append(XmlaHttpUtility.IntToHex((int)(c >> 8 & '\u000f')));
                    stringBuilder.Append(XmlaHttpUtility.IntToHex((int)(c >> 4 & '\u000f')));
                    stringBuilder.Append(XmlaHttpUtility.IntToHex((int)(c & '\u000f')));
                }
            }
            return(stringBuilder.ToString());
        }
        private static byte[] UrlEncodeNonAscii(byte[] bytes, int offset, int count, bool alwaysCreateNewReturnValue)
        {
            if (!XmlaHttpUtility.ValidateUrlEncodingParameters(bytes, offset, count))
            {
                return(null);
            }
            int num = 0;

            for (int i = 0; i < count; i++)
            {
                if (XmlaHttpUtility.IsNonAsciiByte(bytes[offset + i]))
                {
                    num++;
                }
            }
            if (!alwaysCreateNewReturnValue && num == 0)
            {
                return(bytes);
            }
            byte[] array = new byte[count + num * 2];
            int    num2  = 0;

            for (int j = 0; j < count; j++)
            {
                byte b = bytes[offset + j];
                if (XmlaHttpUtility.IsNonAsciiByte(b))
                {
                    array[num2++] = 37;
                    array[num2++] = (byte)XmlaHttpUtility.IntToHex(b >> 4 & 15);
                    array[num2++] = (byte)XmlaHttpUtility.IntToHex((int)(b & 15));
                }
                else
                {
                    array[num2++] = b;
                }
            }
            return(array);
        }
        private static byte[] UrlDecodeInternal(byte[] bytes, int offset, int count)
        {
            if (!XmlaHttpUtility.ValidateUrlEncodingParameters(bytes, offset, count))
            {
                return(null);
            }
            int num = 0;

            byte[] array = new byte[count];
            for (int i = 0; i < count; i++)
            {
                int  num2 = offset + i;
                byte b    = bytes[num2];
                if (b == 43)
                {
                    b = 32;
                }
                else if (b == 37 && i < count - 2)
                {
                    int num3 = XmlaHttpUtility.HexToInt((char)bytes[num2 + 1]);
                    int num4 = XmlaHttpUtility.HexToInt((char)bytes[num2 + 2]);
                    if (num3 >= 0 && num4 >= 0)
                    {
                        b  = (byte)(num3 << 4 | num4);
                        i += 2;
                    }
                }
                array[num++] = b;
            }
            if (num < array.Length)
            {
                byte[] array2 = new byte[num];
                Array.Copy(array, array2, num);
                array = array2;
            }
            return(array);
        }
 public static string AddSessionToUrl(string url, string session)
 {
     return(XmlaHttpUtility.AddValueToUrlQuery(url, "SessionId", session));
 }
        private static string UrlDecodeInternal(string value, Encoding encoding)
        {
            if (value == null)
            {
                return(null);
            }
            int length = value.Length;

            XmlaHttpUtility.UrlDecoder urlDecoder = new XmlaHttpUtility.UrlDecoder(length, encoding);
            int i = 0;

            while (i < length)
            {
                char c = value[i];
                if (c == '+')
                {
                    c = ' ';
                    goto IL_10B;
                }
                if (c != '%' || i >= length - 2)
                {
                    goto IL_10B;
                }
                if (value[i + 1] == 'u' && i < length - 5)
                {
                    int num  = XmlaHttpUtility.HexToInt(value[i + 2]);
                    int num2 = XmlaHttpUtility.HexToInt(value[i + 3]);
                    int num3 = XmlaHttpUtility.HexToInt(value[i + 4]);
                    int num4 = XmlaHttpUtility.HexToInt(value[i + 5]);
                    if (num < 0 || num2 < 0 || num3 < 0 || num4 < 0)
                    {
                        goto IL_10B;
                    }
                    c  = (char)(num << 12 | num2 << 8 | num3 << 4 | num4);
                    i += 5;
                    urlDecoder.AddChar(c);
                }
                else
                {
                    int num5 = XmlaHttpUtility.HexToInt(value[i + 1]);
                    int num6 = XmlaHttpUtility.HexToInt(value[i + 2]);
                    if (num5 < 0 || num6 < 0)
                    {
                        goto IL_10B;
                    }
                    byte b = (byte)(num5 << 4 | num6);
                    i += 2;
                    urlDecoder.AddByte(b);
                }
IL_125:
                i++;
                continue;
IL_10B:
                if ((c & 'タ') == '\0')
                {
                    urlDecoder.AddByte((byte)c);
                    goto IL_125;
                }
                urlDecoder.AddChar(c);
                goto IL_125;
            }
            return(urlDecoder.GetString());
        }
 public static string ExtractSessionFromUrl(string url, out string session)
 {
     return(XmlaHttpUtility.ExtractValueFromUrlQuery(url, "SessionId", out session));
 }
 public static byte[] UrlEncodeToBytes(byte[] bytes, int offset, int count)
 {
     return(XmlaHttpUtility.UrlEncode(bytes, offset, count, true));
 }
 public static NameValueCollection ParseQueryString(string query)
 {
     return(XmlaHttpUtility.ParseQueryString(query, Encoding.UTF8));
 }
 public static byte[] UrlDecodeToBytes(byte[] bytes, int offset, int count)
 {
     return(XmlaHttpUtility.UrlDecodeInternal(bytes, offset, count));
 }
 public static NameValueCollection ParseQueryString(string query, Encoding encoding)
 {
     return(XmlaHttpUtility.ParseQueryString(query, encoding, true));
 }
            internal virtual string ToString(bool urlencoded, IDictionary excludeKeys)
            {
                int count = this.Count;

                if (count == 0)
                {
                    return(string.Empty);
                }
                StringBuilder stringBuilder = new StringBuilder();

                for (int i = 0; i < count; i++)
                {
                    string text = this.GetKey(i);
                    if (excludeKeys == null || text == null || excludeKeys[text] == null)
                    {
                        if (urlencoded)
                        {
                            text = XmlaHttpUtility.UrlEncodeUnicode(text);
                        }
                        string    value     = (text != null) ? (text + "=") : string.Empty;
                        ArrayList arrayList = (ArrayList)base.BaseGet(i);
                        int       num       = (arrayList != null) ? arrayList.Count : 0;
                        if (stringBuilder.Length > 0)
                        {
                            stringBuilder.Append('&');
                        }
                        if (num == 1)
                        {
                            stringBuilder.Append(value);
                            string value2 = (string)arrayList[0];
                            if (urlencoded)
                            {
                                value2 = XmlaHttpUtility.UrlEncodeUnicode(value2);
                            }
                            stringBuilder.Append(value2);
                        }
                        else if (num == 0)
                        {
                            stringBuilder.Append(value);
                        }
                        else
                        {
                            for (int j = 0; j < num; j++)
                            {
                                if (j > 0)
                                {
                                    stringBuilder.Append('&');
                                }
                                stringBuilder.Append(value);
                                string value2 = (string)arrayList[j];
                                if (urlencoded)
                                {
                                    value2 = XmlaHttpUtility.UrlEncodeUnicode(value2);
                                }
                                stringBuilder.Append(value2);
                            }
                        }
                    }
                }
                return(stringBuilder.ToString());
            }