示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }