public async Task <IActionResult> Edit(LinkEditModel model) { if (ModelState.IsValid) { var verifyResult = _linkVerifier.Verify(model.OriginUrl, Url, Request); switch (verifyResult) { case LinkVerifyResult.InvalidFormat: return(BadRequest("Not a valid URL.")); case LinkVerifyResult.InvalidLocal: return(BadRequest("Can not use local URL.")); case LinkVerifyResult.InvalidSelfReference: return(BadRequest("Can not use url pointing to this site.")); } var editRequest = new EditLinkRequest(model.Id) { NewUrl = model.OriginUrl, Note = model.Note, AkaName = string.IsNullOrWhiteSpace(model.AkaName) ? null : model.AkaName, IsEnabled = model.IsEnabled }; var response = await _linkForwarderService.EditLinkAsync(editRequest); if (response.IsSuccess) { _cache.Remove(response.Item); } return(Json(response)); } return(BadRequest("Invalid ModelState")); }
public IActionResult Edit([FromRoute] int id, [FromBody] EditLinkRequest request) { bool isEdited = _linkManager.EditLink(CurrentUserId.Value, id, request.Name, request.Description, request.ShortUrl, request.OriginalUrl, request.IsActive); if (!isEdited) { return(NotFound()); } return(NoContent()); }
public async Task <Response <string> > EditLinkAsync(EditLinkRequest editLinkRequest) { try { using var conn = DbConnection; const string sqlFindLink = @"SELECT TOP 1 l.Id, l.OriginUrl, l.FwToken, l.Note, l.AkaName, l.IsEnabled, l.UpdateTimeUtc, l.TTL FROM Link l WHERE l.Id = @id"; var link = await conn.QueryFirstOrDefaultAsync <Link>(sqlFindLink, new { id = editLinkRequest.Id }); if (null == link) { return(new FailedResponse <string>($"Link with id '{editLinkRequest.Id}' does not exist.")); } link.OriginUrl = editLinkRequest.NewUrl; link.Note = editLinkRequest.Note; link.AkaName = editLinkRequest.AkaName; link.IsEnabled = editLinkRequest.IsEnabled; link.TTL = editLinkRequest.TTL; const string sqlUpdate = @"UPDATE Link SET OriginUrl = @OriginUrl, Note = @Note, AkaName = @AkaName, IsEnabled = @IsEnabled, TTL = @TTL WHERE Id = @Id"; await conn.ExecuteAsync(sqlUpdate, link); return(new SuccessResponse <string>(link.FwToken)); } catch (Exception e) { _logger.LogError(e, e.Message); return(new FailedResponse <string>(e.Message)); } }
public async Task <string> EditLinkAsync(EditLinkRequest editLinkRequest) { var link = await _connection.Link.FirstOrDefaultAsync(p => p.Id == editLinkRequest.Id); if (link is null) { return(null); } link.OriginUrl = editLinkRequest.NewUrl; link.Note = editLinkRequest.Note; link.AkaName = editLinkRequest.AkaName; link.IsEnabled = editLinkRequest.IsEnabled; link.TTL = editLinkRequest.TTL; await _connection.UpdateAsync(link); return(link.FwToken); }
public async Task <IActionResult> Edit(LinkEditModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var flag = await _featureManager.IsEnabledAsync(nameof(FeatureFlags.AllowSelfRedirection)); var verifyResult = _linkVerifier.Verify(model.OriginUrl, Url, Request, flag); switch (verifyResult) { case LinkVerifyResult.InvalidFormat: return(BadRequest("Not a valid URL.")); case LinkVerifyResult.InvalidLocal: return(BadRequest("Can not use local URL.")); case LinkVerifyResult.InvalidSelfReference: return(BadRequest("Can not use url pointing to this site.")); } var editRequest = new EditLinkRequest(model.Id) { NewUrl = model.OriginUrl, Note = model.Note, AkaName = string.IsNullOrWhiteSpace(model.AkaName) ? null : model.AkaName, IsEnabled = model.IsEnabled, TTL = model.TTL }; var token = await _linkForwarderService.EditLinkAsync(editRequest); if (token is not null) { _cache.Remove(token); } return(Json(token)); }
public AddLinkCommand(EditLinkRequest payload) { Payload = payload; }
public async Task <IActionResult> Update([NotEmpty] Guid id, EditLinkRequest request) { await _mediator.Send(new UpdateLinkCommand(id, request)); return(NoContent()); }
public async Task <IActionResult> Create(EditLinkRequest request) { await _mediator.Send(new AddLinkCommand(request)); return(Created(new Uri(request.LinkUrl), request)); }
public UpdateLinkCommand(Guid id, EditLinkRequest model) { Id = id; Model = model; }