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