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)); }
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 } ))); }