private Uri AssembleUrl(string path, Uri current, UrlProviderMode mode) { if (string.IsNullOrEmpty(path)) { return(null); } Uri uri; if (current == null) { mode = UrlProviderMode.Relative; // best we can do } switch (mode) { case UrlProviderMode.Absolute: uri = new Uri(current?.GetLeftPart(UriPartial.Authority) + path); break; case UrlProviderMode.Relative: case UrlProviderMode.Auto: uri = new Uri(path, UriKind.Relative); break; default: throw new ArgumentOutOfRangeException(nameof(mode)); } return(UriUtility.MediaUriFromUmbraco(uri)); }
private Uri AssembleUrl(string path, Uri current, UrlMode mode) { if (string.IsNullOrWhiteSpace(path)) { throw new ArgumentException($"{nameof(path)} cannot be null or whitespace", nameof(path)); } // the stored path is absolute so we just return it as is if (Uri.IsWellFormedUriString(path, UriKind.Absolute)) { return(new Uri(path)); } Uri uri; if (current == null) { mode = UrlMode.Relative; // best we can do } switch (mode) { case UrlMode.Absolute: uri = new Uri(current?.GetLeftPart(UriPartial.Authority) + path); break; case UrlMode.Relative: case UrlMode.Auto: uri = new Uri(path, UriKind.Relative); break; default: throw new ArgumentOutOfRangeException(nameof(mode)); } return(_uriUtility.MediaUriFromUmbraco(uri)); }