Пример #1
0
 public IActionResult Post([FromBody] JObject visitor)
 {
     if (!visitor.ContainsKey("name"))
     {
         return(StatusCode(
                    (int)HttpStatusCode.BadRequest,
                    new JObject {
             ["error"] = "Must provide a 'name' key and value in object"
         }));
     }
     _visitorService.RegisterVisitor(visitor.GetValue("name").Value <string>());
     return(StatusCode((int)HttpStatusCode.OK, new JObject {
         ["success"] = true
     }));
 }
Пример #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));
            }
        }