Beispiel #1
0
        /// <summary>
        /// 파일 버전 정보를 분해하여 각 구분별로 숫자로 나타낸다. (major.minor.release.build)
        /// </summary>
        /// <param name="version">버전 정보</param>
        /// <param name="major"></param>
        /// <param name="minor"></param>
        /// <param name="release"></param>
        /// <param name="build"></param>
        /// <remarks>파싱이 불가능할 때에는 모든 값들이 0이 된다.</remarks>
        public static void ParseVersion(string version, out int major, out int minor, out int release, out int build)
        {
            major   = 0;
            minor   = 0;
            release = 0;
            build   = 0;

            var versionArray = StringTool.Split(version, '.');

            if (versionArray.Length > 0)
            {
                major = int.Parse(versionArray[0]);
            }

            if (versionArray.Length > 1)
            {
                minor = int.Parse(versionArray[1]);
            }

            if (versionArray.Length > 2)
            {
                release = int.Parse(versionArray[2]);
            }

            if (versionArray.Length > 3)
            {
                build = int.Parse(versionArray[3]);
            }

            if (IsDebugEnabled)
            {
                log.Debug("Parse Version:{0} ==> {1}.{2}.{3}.{4}", version, major, minor, release, build);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Url에서 ? 구분자로 Parameter 반환한다.
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static NameValueCollection GetParam(string url)
        {
            var cols = new System.Collections.Specialized.NameValueCollection();

            if (url.IndexOf("?") < 0)
            {
                return(cols);
            }

            string[] param = GetParams(url);

            foreach (string pr in param)
            {
                string[] p = StringTool.Split(pr, '=');

                if (p.Length < 2)
                {
                    continue;
                }

                if (string.IsNullOrEmpty(p[0]))
                {
                    continue;
                }

                cols.Add(p[0], (p.Length > 1) ? p[1] : string.Empty);
            }

            return(cols);
        }
Beispiel #3
0
        /// <summary>
        /// url의 파라미터 값을 urlEncode
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string ParamUrlEncode(string url)
        {
            if (url.IndexOf("?") < 0)
            {
                return(url);
            }

            string[] param = GetParams(url);

            System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();

            foreach (string pr in param)
            {
                string[] p = StringTool.Split(pr, '=');

                if (p.Length < 2)
                {
                    continue;
                }

                if (string.IsNullOrEmpty(p[0]))
                {
                    continue;
                }

                stringBuilder.AppendFormat("{0}={1}&", p[0], AntiXssTool.UrlEncode((p.Length > 1) ? p[1] : string.Empty));
            }

            return(stringBuilder.ToString());
        }
Beispiel #4
0
        /// <summary>
        /// Helper function that splits a string containing delimiter separated key value pairs
        /// into hashtable
        /// </summary>
        /// <param name="str">delimiter separated key value pairs</param>
        /// <param name="delimiters">List of delimiters</param>
        /// <returns></returns>
        private static Hashtable ToHashtable(string str, char[] delimiters)
        {
            var result = new Hashtable();

            if (str.IsWhiteSpace())
            {
                return(result);
            }

            if (delimiters == null || delimiters.Length == 0)
            {
                return(result);
            }

            var strArray = StringTool.Split(str, delimiters[0]);

            if (delimiters.Length > 1)
            {
                foreach (var s in strArray)
                {
                    var values = s.Split(delimiters[1]);
                    if (values.Length >= 2)
                    {
                        result[values[0].ToLower()] = values[1];
                    }
                }
            }
            return(result);
        }
        /// <summary>
        /// 저장된 문자열을 역직렬화하여 객체로 반환한다.
        /// </summary>
        /// <param name="compressedBytes">압축 저장된 Data</param>
        /// <returns></returns>
        public object Deserialize(byte[] compressedBytes)
        {
            if (compressedBytes == null || compressedBytes.Length == 0)
            {
                return(null);
            }

            try {
                var savedText = DecompressValue(compressedBytes);

                if (savedText.IsWhiteSpace())
                {
                    return(null);
                }

                var texts = StringTool.Split(savedText, JsonSerializableUserType.Delimiter);

                if (texts.Length != 2)
                {
                    if (log.IsWarnEnabled)
                    {
                        log.Warn("savedText가 구분자로 구분할 때 [수형] || [JsonText] 형태로 만들어지지 않았습니다. savedText=[{0}]", savedText);
                    }

                    return(null);
                }

                var typeText = texts[0];
                var jsonText = texts[1];

                if (jsonText.IsWhiteSpace())
                {
                    return(null);
                }

                var type = Type.GetType(typeText, true, true);

                if (IsDebugEnabled)
                {
                    log.Debug("Json DeserializeSessionState type=[{0}], content=[{1}]", type.FullName, jsonText.EllipsisChar(255));
                }

                return(JsonTool.DeserializeFromText(jsonText, type));
            }
            catch (Exception ex) {
                if (log.IsErrorEnabled)
                {
                    log.Error("Json 역직렬화에 실패했습니다. null을 반환합니다.");
                    log.Error(ex);
                }
            }
            return(null);
        }
Beispiel #6
0
        /// <summary>
        /// 저장된 문자열을 역직렬화하여 객체로 반환한다.
        /// </summary>
        /// <param name="savedText"></param>
        /// <returns></returns>
        public static object Deserialize(string savedText)
        {
            if (savedText.IsWhiteSpace())
            {
                return(null);
            }

            var texts = StringTool.Split(savedText, Delimiter);

            if (texts.Length != 2)
            {
                if (log.IsWarnEnabled)
                {
                    log.Warn("savedText가 구분자로 구분할 때 [수형] || [JsonText] 형태로 만들어지지 않았습니다. savedText=[{0}]", savedText);
                }

                return(null);
            }

            try {
                var typeText = texts[0];
                var jsonText = texts[1];

                if (jsonText.IsWhiteSpace())
                {
                    return(null);
                }

                var type = Type.GetType(typeText, true, true);

                if (IsDebugEnabled)
                {
                    log.Debug("Json DeserializeSessionState type=[{0}], content=[{1}]", type.AssemblyQualifiedName,
                              jsonText.EllipsisChar(255));
                }

                return(JsonTool.DeserializeFromText(jsonText, type));
            }
            catch (Exception ex) {
                if (log.IsErrorEnabled)
                {
                    log.Error("Json 역직렬화에 실패했습니다. null을 반환합니다.");
                    log.Error(ex);
                }
            }
            return(null);
        }
Beispiel #7
0
        /// <summary>
        /// 파라미터 값을 변경한다.
        /// </summary>
        /// <param name="url"></param>
        /// <param name="keyName"></param>
        /// <param name="v"></param>
        /// <returns></returns>
        public static string ReplaceParamValue(string url, string keyName, object v)
        {
            if (url.IndexOf("?") < 0)
            {
                return(url);
            }

            string[] param = GetParams(url);
            url = GetUri(url);

            System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();

            foreach (string pr in param)
            {
                string[] p = StringTool.Split(pr, '=');

                if (p.Length < 2)
                {
                    continue;
                }

                if (string.IsNullOrEmpty(p[0]))
                {
                    continue;
                }

                if (p[0].ToUpper().Equals(keyName.ToUpper()))
                {
                    stringBuilder.AppendFormat("{0}={1}&", p[0], (v != null) ? v.ToString() : string.Empty);
                }
                else
                {
                    stringBuilder.AppendFormat("{0}={1}&", p[0], (p.Length > 1) ? p[1] : string.Empty);
                }
            }

            return(url + "?" + stringBuilder);
        }
Beispiel #8
0
 /// <summary>
 /// Url에서 ? 구분자로 Parameter 반환한다.
 /// </summary>
 /// <param name="url"></param>
 /// <returns></returns>
 public static string[] GetParams(string url)
 {
     return(StringTool.Split(GetParamString(url).Replace("&amp;", "&", true), '&'));
 }