static MonoHttpEncoder()
        {
#if NET_4_0
            defaultEncoder     = new Lazy <MonoHttpEncoder> (() => new MonoHttpEncoder());
            currentEncoderLazy = new Lazy <MonoHttpEncoder> (new Func <MonoHttpEncoder> (GetCustomEncoderFromConfig));
#else
            defaultEncoder = new MonoHttpEncoder();
            currentEncoder = defaultEncoder;
#endif
        }
Exemple #2
0
        public static byte[] UrlEncodeToBytes(byte[] bytes, int offset, int count)
        {
            if (bytes == null)
            {
                return(null);
            }
#if NET_4_0
            return(MonoHttpEncoder.Current.UrlEncode(bytes, offset, count));
#else
            return(MonoHttpEncoder.UrlEncodeToBytes(bytes, offset, count));
#endif
        }
Exemple #3
0
        public static byte[] UrlEncodeUnicodeToBytes(string str)
        {
            if (str == null)
            {
                return(null);
            }

            if (str.Length == 0)
            {
                return(new byte[0]);
            }

            MemoryStream result = new MemoryStream(str.Length);

            foreach (char c in str)
            {
                MonoHttpEncoder.UrlEncodeChar(c, result, true);
            }
            return(result.ToArray());
        }
Exemple #4
0
        public static string UrlEncode(string s, Encoding Enc)
        {
            if (s == null)
            {
                return(null);
            }

            if (s == String.Empty)
            {
                return(String.Empty);
            }

            bool needEncode = false;
            int  len        = s.Length;

            for (int i = 0; i < len; i++)
            {
                char c = s[i];
                if ((c < '0') || (c < 'A' && c > '9') || (c > 'Z' && c < 'a') || (c > 'z'))
                {
                    if (MonoHttpEncoder.NotEncoded(c))
                    {
                        continue;
                    }

                    needEncode = true;
                    break;
                }
            }

            if (!needEncode)
            {
                return(s);
            }

            // avoided GetByteCount call
            byte[] bytes   = new byte[Enc.GetMaxByteCount(s.Length)];
            int    realLen = Enc.GetBytes(s, 0, s.Length, bytes, 0);

            return(Encoding.ASCII.GetString(UrlEncodeToBytes(bytes, 0, realLen)));
        }