private bool ImagePathIsResolvable(string imagePath) { DebugGuard.ArgumentIsNotNullOrEmpty(imagePath, "imagePath"); if (imagePath.StartsWith("http") || imagePath.StartsWith("/") || imagePath.StartsWith("#") || imagePath.StartsWith("$") || Regex.IsMatch(imagePath, @"[^A-Z,a-z,0-9,_,\-,/,\.]") || string.IsNullOrEmpty(Path.GetExtension(imagePath))) { return(false); } var fileExtension = Path.GetExtension(imagePath); return(fileExtension.ToLower() != "css" && fileExtension.ToLower() != "js"); }
private string ResolveImagePath(string imagePath, string contextFolderWebDavUrl) { DebugGuard.ArgumentIsNotNullOrEmpty(imagePath, "imagePath"); DebugGuard.ArgumentIsNotNullOrEmpty(contextFolderWebDavUrl, "contextFolderWebDavUrl"); Logger.Debug("Resolving image path: " + imagePath); var imageWebDavUrl = this.ConstructImageWebDavUrl(imagePath, contextFolderWebDavUrl); var imageComponent = this.Context.Engine.GetObject <Component>(imageWebDavUrl); if (imageComponent == null) { var errorMessage = string.Format("Resolved image WebDavUrl \"{0}\" does not exist.", imageWebDavUrl); throw new Exception(errorMessage); } var imageUrl = this.Context.CreateCachedMultimediaItem(this.Context.Engine.GetObject <Component>(imageWebDavUrl)).Url; return(imageUrl); }
private string ConstructImageWebDavUrl(string imagePath, string contextFolderWebDavUrl) { DebugGuard.ArgumentIsNotNullOrEmpty(imagePath, "imagePath"); DebugGuard.ArgumentIsNotNullOrEmpty(contextFolderWebDavUrl, "contextFolderWebDavUrl"); var imagePathParts = imagePath.Split('/'); var imagePathPartsCount = imagePathParts.Length; var containerWebDavUrlParts = contextFolderWebDavUrl.Split('/'); var containerWebDavUrlPartsCount = containerWebDavUrlParts.Length; var trailingImagePath = string.Empty; for (var i = 0; i < imagePathPartsCount; i++) { if (imagePathParts[i] == "..") { containerWebDavUrlPartsCount--; } else { trailingImagePath += "/" + imagePathParts[i]; } } var imageWebDavUrl = string.Empty; for (var i = 0; i < containerWebDavUrlPartsCount; i++) { if (containerWebDavUrlParts[i] != string.Empty) { imageWebDavUrl += "/" + containerWebDavUrlParts[i]; } } return(imageWebDavUrl + trailingImagePath); }