Пример #1
0
        /// <summary>
        /// The thumbnail must be in a fixed format of
        /// /thumbnail/200/200/guidorpath.
        /// TODO: Refactor to new location, do not know where to put this file yet.
        /// </summary>
        /// <param name="relativeUrl"></param>
        /// <returns></returns>
        public static ThumbnailRequest ParseThumbnailRequest(string relativeUrl)
        {
            ThumbnailRequest request = new ThumbnailRequest();

            if (relativeUrl == null)
            {
                return(request);
            }

            var pathArr = relativeUrl.Split(new[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries);

            if (pathArr.Length < 4)
            {
                return(request);
            }
            if (!pathArr[0].EqualsOrNullEmpty(SiteConstants.ThumbnailRootPathName, StringComparison.OrdinalIgnoreCase))
            {
                return(request);
            }
            if (!pathArr[1].IsAsciiDigit() || !pathArr[2].IsAsciiDigit())
            {
                return(request);
            }
            request.Width = Convert.ToInt32(pathArr[1]);

            request.Height = Convert.ToInt32(pathArr[2]);

            string pathOrGuid = pathArr[3];

            var questionIndex = pathOrGuid.IndexOf("?");

            if (questionIndex > -1)
            {
                pathOrGuid = pathOrGuid.Substring(0, questionIndex);
            }

            Guid imgGuid;

            if (Guid.TryParse(pathOrGuid, out imgGuid))
            {
                request.ImageId = imgGuid;
            }
            else
            {
                var newPath = new List <string>();
                for (int i = 3; i < pathArr.Length; i++)
                {
                    newPath.Add(pathArr[i]);
                }
                request.Path = String.Concat("/", String.Join("/", newPath));
            }

            return(request);
        }