/// <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); }