public static string CreateShortUrlToken() { var random = new Random(); string shortUrl = new string(Enumerable.Repeat(chars, 5).Select(s => s[random.Next(s.Length)]).ToArray()); // check uniqueness of token UrlDal dal = new UrlDal(); Url url = dal.Get(shortUrl); while (url != null) { shortUrl = CreateShortUrlToken(); } return shortUrl; }
public ActionResult Redirect() { string shortUrl = ControllerContext.RouteData.Values["shorturl"].ToString(); UrlDal urlDal = new UrlDal(); Url url = urlDal.Get(shortUrl); if (url != null) { // add url hit StatDal statDal = new StatDal(); statDal.Add(new Stat() { HitDate = DateTime.Now, UrlId = url.Id }); return new RedirectResult(url.LongUrl); } return new RedirectToRouteResult(new RouteValueDictionary(new { action = "NotFound", controller = "Home" })); }