Exemplo n.º 1
0
        public async Task <VisitorResponseDto> RegisterVisitor(VisitorRequestDto visitorRequest)
        {
            Domain.Entities.ShortUrl shortUrl = _shortUrlRepository.GetByFilter(x => x.ShortURL == visitorRequest.ShortUrl).Result.FirstOrDefault();

            var newVisitor = new Domain.Entities.Visitor
            {
                Date      = DateTime.Now,
                IsDeleted = false,
                Ip        = visitorRequest.Ip,
                UserAgent = visitorRequest.UserAgent,
                ShortUrl  = shortUrl
            };

            await _visitorRepository.Create(newVisitor);

            try
            {
                _visitorRepository.Commit();

                return(new VisitorResponseDto
                {
                    Message = "Visitor registered",
                    Success = true
                });
            }
            catch (Exception ex)
            {
                _visitorRepository.Rollback();
                throw ex;
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Get(string shorturl, [FromQuery(Name = "ipAdress")] string ipAdress = null, [FromQuery(Name = "redirect")] bool redirect = true)
        {
            try
            {
                ShortUrlDto shortUrl = _shortUrlService.GetItemFromDataStore(shorturl);

                if (shortUrl != null)
                {
                    var    userAgent       = HttpContext.Request.Headers["User-Agent"];
                    string parsedUserAgent = Convert.ToString(userAgent[0]);

                    var ip = ipAdress ?? GetIpAddress();

                    VisitorRequestDto visitorRequest = new VisitorRequestDto
                    {
                        Ip        = ip,
                        ShortUrl  = shorturl,
                        UserAgent = parsedUserAgent
                    };

                    VisitorResponseDto visitorResponse = await _visitorService.RegisterVisitor(visitorRequest);

                    if (visitorResponse.Success)
                    {
                        if (redirect)
                        {
                            return(Redirect(shortUrl.LongURL));
                        }

                        return(Ok(shortUrl));
                    }

                    return(BadRequest("Can't register visitor"));
                }

                return(NotFound());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }