/// <summary> /// Expands the miniUri submitted or returns the original Url associated with this miniUrl /// </summary> /// <param name="miniUri">The Uri wrapping the mini url</param> /// <returns>The original expanded Url string</returns> /// <exception cref="ArgumentException"></exception> public static string ExpandUrl(Uri miniUri) { if (miniUri == null || string.IsNullOrWhiteSpace(miniUri.AbsoluteUri)) { throw new ArgumentException("miniUri is null or the url associated is null"); } string miniUrlFragment = GetLastSegmentFromUrl(miniUri); string originalUrl = EarlMiniRepository.GetOriginalUrl(miniUrlFragment); return(originalUrl); }
/// <summary> /// Minifies or shortens the supplied urlstring using a randomly generated 8-characted aplhanumeric string or fragment /// </summary> /// <param name="uri">The uri wrapped around the url to minify</param> /// <param name="useSecureMiniUrl"></param> /// <returns></returns> /// <exception cref="ArgumentException"></exception> public static string MinifyUrl(Uri uri, bool useSecureMiniUrl = false) { if (uri == null || string.IsNullOrWhiteSpace(uri.AbsoluteUri)) { throw new ArgumentException("uri is null or the url associated is null"); } bool success; string miniUrl; string originalUrl = uri.AbsoluteUri; int tries = MaxNumberOfTriesToGenerateUniqueFragment; do { string fragment = GenerateFragment(); miniUrl = String.Format(useSecureMiniUrl ? SecureMiniUrlTemplate : UnSecureMiniUrlTemplate, HostName, fragment); //Check if this url is already existing string alreadyExistingMiniUrl = EarlMiniRepository.GetMiniUrl(originalUrl); if (string.IsNullOrWhiteSpace(alreadyExistingMiniUrl)) { success = EarlMiniRepository.SaveMiniUrl(originalUrl, fragment, miniUrl); } else { miniUrl = alreadyExistingMiniUrl; success = true; } tries--; } while (success == false && tries > 0); if (success) { return(miniUrl); } return(string.Empty); }