public string GetPath(string relativePath) { if (!string.IsNullOrEmpty(relativePath) && relativePath.IndexOf('~') == 0) { throw new ArgumentException(string.Format("bad path format {0} remove '~'", relativePath), "relativePath"); } if (CoreBaseSettings.Standalone && StaticUploader.CanUpload()) { try { var result = StorageSettingsHelper.DataStore(SettingsManager.Load <CdnStorageSettings>()).GetInternalUri("", relativePath, TimeSpan.Zero, null).AbsoluteUri.ToLower(); if (!string.IsNullOrEmpty(result)) { return(result); } } catch (Exception) { } } return(WebPathSettings.GetPath(HttpContextAccessor.HttpContext, Options, relativePath)); }
public static string GetPath(string relativePath) { if (relativePath.StartsWith("~")) { throw new ArgumentException(string.Format("bad path format {0} remove '~'", relativePath), "relativePath"); } var result = relativePath; var ext = Path.GetExtension(relativePath).ToLowerInvariant(); if (CoreContext.Configuration.Standalone && StaticUploader.CanUpload()) { try { result = CdnStorageSettings.Load().DataStore.GetInternalUri("", relativePath, TimeSpan.Zero, null).AbsoluteUri.ToLower(); if (!string.IsNullOrEmpty(result)) { return(result); } } catch (Exception) { } } if (Appenders.Any()) { var avaliableAppenders = Appenders.Where(x => x.Extensions.Split('|').Contains(ext) || String.IsNullOrEmpty(ext)).ToList(); var avaliableAppendersCount = avaliableAppenders.LongCount(); AppenderConfigurationElement appender; if (avaliableAppendersCount > 1) { appender = avaliableAppenders[(int)(relativePath.Length % avaliableAppendersCount)]; } else if (avaliableAppendersCount == 1) { appender = avaliableAppenders.First(); } else { appender = Appenders.First(); } if (appender.Append.StartsWith("~")) { var query = string.Empty; //Rel path if (relativePath.IndexOfAny(new[] { '?', '=', '&' }) != -1) { //Cut it query = relativePath.Substring(relativePath.IndexOf('?')); relativePath = relativePath.Substring(0, relativePath.IndexOf('?')); } if (HostingEnvironment.IsHosted) { result = VirtualPathUtility.ToAbsolute(string.Format("{0}/{1}{2}", appender.Append.TrimEnd('/'), relativePath.TrimStart('/'), query)); } else { result = string.Format("{0}/{1}{2}", appender.Append.TrimEnd('/').TrimStart('~'), relativePath.TrimStart('/'), query); } } else { if (HostingEnvironment.IsHosted && SecureHelper.IsSecure() && !string.IsNullOrEmpty(appender.AppendSecure)) { result = string.Format("{0}/{1}", appender.AppendSecure.TrimEnd('/'), relativePath.TrimStart('/')); } else { //Append directly result = string.Format("{0}/{1}", appender.Append.TrimEnd('/'), relativePath.TrimStart('/')); } } } //To LOWER! cause Amazon is CASE SENSITIVE! return(result.ToLowerInvariant()); }