public async Task <IActionResult> OnGetAsync(long?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Urlshortener = await _context.Urlshortener.FirstOrDefaultAsync(m => m.AutoId == id);

            if (Urlshortener == null)
            {
                return(NotFound());
            }
            return(Page());
        }
示例#2
0
        public async Task <IActionResult> OnPostAsync(long?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Urlshortener = await _context.Urlshortener.FindAsync(id);

            if (Urlshortener != null)
            {
                _context.Urlshortener.Remove(Urlshortener);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
        public async Task <ActionResult <Urlshortener> > RefreshToken(long id)
        {
            const string splittor = @"://";

            //
            Urlshortener shortener = await _context.Urlshortener.FirstOrDefaultAsync <Urlshortener>(u => u.AutoId == id);

            if (shortener != null)
            {
                //
                string newToken = GenerateToken();
                while (_context.Urlshortener.FirstOrDefault <Urlshortener>(u => u.Token.Equals(newToken)) != null)
                {
                    newToken = GenerateToken();
                }

                //
                shortener.Token = newToken;

                //
                shortener.ShortUrl = shortener.Url.Split(splittor)[0] + splittor + shortener.Token;
                _context.Attach(shortener).State = EntityState.Modified;
                try
                {
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(new JsonResult("500 Internal Server Error."));
                }

                return(Redirect("/Urlshorteners/Edit/?id=" + id));
            }
            else
            {
                return(NotFound());
            }
        }
        public async Task <ActionResult <Urlshortener> > UrlRedirect([FromRoute] string token)
        {
            Urlshortener shortener = await _context.Urlshortener.FirstOrDefaultAsync <Urlshortener>(u => u.Token.Equals(token));

            if (shortener != null)
            {
                if (shortener.ExpiredDateTime == null || shortener.ExpiredDateTime > DateTime.Now)
                {
                    //
                    if (shortener.Clicked == null)
                    {
                        shortener.Clicked = 0;
                    }

                    //
                    shortener.Clicked += 1;
                    _context.Attach(shortener).State = EntityState.Modified;
                    try
                    {
                        await _context.SaveChangesAsync();
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        return(new JsonResult("500 Internal Server Error."));
                    }

                    return(Redirect(shortener.Url));
                }
                else
                {
                    return(new JsonResult(token + " has expired."));
                }
            }
            else
            {
                return(NotFound());
            }
        }
        public async Task <ActionResult <Urlshortener> > PostUrlshortener(Urlshortener urlshortener)
        {
            const string splittor = @"://";

            //
            string newToken = GenerateToken();

            while (_context.Urlshortener.FirstOrDefault <Urlshortener>(u => u.Token.Equals(newToken)) != null)
            {
                newToken = GenerateToken();
            }

            //
            Urlshortener newItem = new Urlshortener();

            newItem.Url = urlshortener.Url;
            newItem.CreatedTimeStamp = DateTime.Now;
            newItem.ExpiredDateTime  = urlshortener.ExpiredDateTime;
            newItem.Token            = newToken;

            //
            int i = urlshortener.Url.IndexOf(splittor);

            if (i == -1)
            {
                newItem.Url = @"http://" + newItem.Url;
            }

            newItem.ShortUrl = newItem.Url.Split(splittor)[0] + splittor + newItem.Token;

            //
            _context.Urlshortener.Add(newItem);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetUrlshortener", new { id = newItem.AutoId }, newItem));
        }