示例#1
0
        public IActionResult Post([FromBody] LongUrl longUrl)
        {
            //If User.Identity.Name is null, request is from and API Client, read azp claim instead.
            var    userName     = User.Identity.Name ?? (User.Identity as ClaimsIdentity)?.Claims.FirstOrDefault(x => x.Type == "azp")?.Value;
            string shortCode    = ShortUrl.Encode(_dataRepository.SaveLink(longUrl?.Url, userName));
            var    shortenedUrl = Url.Link("RedirectToLink", new { url = shortCode });

            return(Created(shortenedUrl, shortenedUrl));
        }
示例#2
0
        public IActionResult Get()
        {
            //Get links created by users as well as applications assigned to them as well.
            var links = _context.Link
                        .Where(x => x.CreatedBy == User.Identity.Name || _context.ApplicationUsers.Where(a => a.UserName.Equals(User.Identity.Name)).Select(u => u.ApplicationId.ToString()).Contains(x.CreatedBy))
                        .OrderByDescending(x => x.Id)
                        .Take(100)
                        .Select(x => new
            {
                OriginalLink = x.OriginalLink,
                Id           = x.Id,
                Stats        = Stats.FromJson(x.Stats)
            }).ToList();

            return(Ok(links.Select(
                          x => new
            {
                Id = x.Id,
                OriginalLink = x.OriginalLink,
                ShortLink = Url.Link("RedirectToLink", new { url = ShortUrl.Encode(x.Id) }),
                Clicks = x.Stats?.Clicks
            }
                          )));
        }