示例#1
0
        public async Task <JsonResult> GetOriginalLink(string shortLink)
        {
            //return Json(shortLink);
            if (shortLink.Length < 3)
            {
                return(Json(new URLShortener.Model.Exception {
                    Message = "Too short link"
                }));
            }

            int ID   = UtilLinks.Decode(shortLink.Substring(0, shortLink.Length - 3));
            var link = await db.Links.FirstOrDefaultAsync(x => x.Id == ID);

            if (link == null)
            {
                return(Json(new URLShortener.Model.Exception {
                    Message = "Original link not found"
                }));
            }
            bool isExpired = UtilLinks.GetDateDifference(DateTime.Now, link.DateOfCreation) > 10 ? true : false;

            if (link != null && isExpired)
            {
                return(Json(new URLShortener.Model.Exception {
                    Message = "This is expired link - " +
                              link.ShortLink + ". Update link lifetime using post request. Full link - " + link.OriginalLink
                }));
            }
            return(Json(new OriginalLinkDTO {
                OriginalLink = link.OriginalLink
            }));
        }
示例#2
0
        public async Task <RedirectResult> RedirectToOriginalLink(string shortLink)
        {
            if (shortLink.Length < 3)
            {
                return(Redirect("/notFound"));
            }
            int ID   = UtilLinks.Decode(shortLink.Substring(0, shortLink.Length - 3));
            var link = await db.Links.FirstOrDefaultAsync(x => x.Id == ID);

            if (link == null)
            {
                return(Redirect("/notFound"));
            }
            bool isExpired = UtilLinks.GetDateDifference(DateTime.Now, link.DateOfCreation) > 10 ? true : false;

            if (link != null && isExpired)
            {
                return(Redirect("/expiredLink"));
            }

            return(Redirect(link.OriginalLink));
        }
示例#3
0
        public async Task <JsonResult> GenerateShortLink([FromBody] OriginalLinkDTO originalLink)
        {
            var link = await db.Links?.FirstOrDefaultAsync(x => x.OriginalLink == originalLink.OriginalLink);


            if (link == null)
            {
                int maxID = 0;
                if (db.Links.Count() != 0)
                {
                    maxID = db.Links.Max(u => u.Id);
                }

                string shortLink = UtilLinks.GetShortLink(maxID + 1);
                var    newLink   = new Link();
                newLink.OriginalLink   = originalLink.OriginalLink;
                newLink.ShortLink      = shortLink;
                newLink.DateOfCreation = DateTime.Now;
                db.Links.Add(newLink);
                await db.SaveChangesAsync();

                return(Json(new ShortLinkDTO {
                    ShortLink = newLink.ShortLink
                }));
            }

            bool isExpired = UtilLinks.GetDateDifference(DateTime.Now, link.DateOfCreation) > 10 ? true : false;

            if (isExpired)
            {
                link.DateOfCreation = DateTime.Now;
                await db.SaveChangesAsync();
            }
            return(Json(new ShortLinkDTO {
                ShortLink = link.ShortLink
            }));
        }