public async Task <IActionResult> Post(GeneratorRequest model) { model.IpAddress = HttpContext.Connection.RemoteIpAddress.ToString(); GeneratorResponse response = await _itemBusiness.GenerateAsync(model); if (response.IsSuccess) { return(Ok(new Uri(Request.Scheme + "://" + Request.Host.Value + Request.PathBase + "/" + response.Segment).ToString())); } return(BadRequest(response.Message)); }
public async Task <GeneratorResponse> GenerateAsync(GeneratorRequest model) { var response = new GeneratorResponse(); try { if (model == null) { response.IsSuccess = false; response.Message = "Empty model"; return(response); } if (string.IsNullOrWhiteSpace(model.OriginUrl)) { response.IsSuccess = false; response.Message = "Empty origin url"; return(response); } Item entity = await _itemQueryHandler.GetByOriginUrlAsync(model.OriginUrl); string segment = entity?.Segment; if (string.IsNullOrWhiteSpace(segment)) { // generate new segment segment = KeyGeneratorExtension.GetUniqueKey(8); await _itemCommandHandler.ExecuteAsync(new CreateItemCommand { IpAddress = model.IpAddress, ExpiredDate = model.ExpiredDate, OriginUrl = model.OriginUrl, Segment = segment }); } response.IsSuccess = true; response.Segment = segment; } catch (Exception exception) { response.IsSuccess = false; response.Message = exception.Message; } return(response); }