public IActionResult SetTextResource(long textId, CreateTextVersionRequestContract request, SaveTextModeType mode) { SaveTextResponse response; switch (mode) { case SaveTextModeType.FullValidateOrDeny: response = m_textManager.SaveTextFullValidate(textId, request); break; case SaveTextModeType.FullValidateAndRepair: response = m_textManager.SaveTextFullValidateAndRepair(textId, request); break; case SaveTextModeType.ValidateOnlySyntax: response = m_textManager.SaveTextValidateSyntax(textId, request); break; case SaveTextModeType.NoValidation: response = m_textManager.SaveWithoutValidation(textId, request); break; default: throw new ArgumentOutOfRangeException(nameof(mode), mode, null); } return(Json(response)); }
public IActionResult CreateNewTextResourceVersion(long textId, [FromBody] CreateTextVersionRequestContract request) { m_authorizationManager.AuthorizeResource(textId, PermissionFlag.EditProject); var result = m_projectContentManager.CreateNewTextResourceVersion(textId, request); return(Ok(result)); }
public CreateNewTextResourceWork(ResourceRepository resourceRepository, long textId, CreateTextVersionRequestContract newTextContract, int userId, IFulltextStorage fulltextStorage) : base(resourceRepository) { m_resourceRepository = resourceRepository; m_textId = textId; m_newTextContract = newTextContract; m_userId = userId; m_fulltextStorage = fulltextStorage; }
public SaveTextResponse SaveWithoutValidation(long textId, CreateTextVersionRequestContract request) { var client = m_communicationProvider.GetMainServiceProjectClient(); var resourceVersionId = client.CreateTextResourceVersion(textId, request); return(new SaveTextResponse { IsValidationSuccess = true, ResourceVersionId = resourceVersionId, NewText = request.Text, }); }
public long CreateNewTextResourceVersion(long textId, CreateTextVersionRequestContract request) { var latestText = m_resourceRepository.InvokeUnitOfWork(x => x.GetLatestResourceVersion <TextResource>(textId)); var project = latestText.Resource.Project; var fulltextStorage = m_fulltextStorageProvider.GetFulltextStorage(project.ProjectType); var userId = m_authenticationManager.GetCurrentUserId(); var createNewTextResourceWork = new CreateNewTextResourceWork(m_resourceRepository, textId, request, userId, fulltextStorage); var resultId = createNewTextResourceWork.Execute(); return(resultId); }
public long CreateTextResourceVersion(long textId, CreateTextVersionRequestContract request) { try { var result = m_client.Post <long>($"project/text/{textId}", request); return(result); } catch (HttpRequestException e) { if (m_logger.IsErrorEnabled()) { m_logger.LogError("{0} failed with {1}", m_client.GetCurrentMethod(), e); } throw; } }
public SaveTextResponse SaveTextFullValidateAndRepair(long textId, CreateTextVersionRequestContract request) { var client = m_communicationProvider.GetMainServiceProjectClient(); var commentContracts = client.GetCommentsForText(textId); var commentMarks = m_markdownCommentAnalyzer.FindAllComments(request.Text); var textBuilder = new StringBuilder(request.Text); foreach (var commentMark in commentMarks) { var isInvalid = !commentMark.IsIdValid || !commentMark.ContainsBothTags; var commentContract = commentContracts.FirstOrDefault(x => x.TextReferenceId == commentMark.Identifier); if (isInvalid || commentContract == null) { // Remove tag reference from text if (!string.IsNullOrEmpty(commentMark.StartTag)) { textBuilder.Replace(commentMark.StartTag, string.Empty); } if (!string.IsNullOrEmpty(commentMark.EndTag)) { textBuilder.Replace(commentMark.EndTag, string.Empty); } } } foreach (var commentContract in commentContracts) { var commentMark = commentMarks.FirstOrDefault(x => x.Identifier == commentContract.TextReferenceId); if (commentMark == null || !commentMark.ContainsBothTags || !commentMark.IsIdValid) { // Add missing reference to the text textBuilder.Insert(0, $"${commentContract.TextReferenceId}%%{commentContract.TextReferenceId}$"); } } request.Text = textBuilder.ToString(); return(SaveWithoutValidation(textId, request)); }
public SaveTextResponse SaveTextFullValidate(long textId, CreateTextVersionRequestContract request) { var isValid = HasOnlyValidCommentsWithValues(request.Text, textId); return(!isValid?ValidationFailResponse() : SaveWithoutValidation(textId, request)); }
public SaveTextResponse SaveTextValidateSyntax(long textId, CreateTextVersionRequestContract request) { var isValidSyntax = HasOnlyValidCommentSyntax(request.Text); return(!isValidSyntax?ValidationFailResponse() : SaveWithoutValidation(textId, request)); }