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));
        }
Exemple #2
0
        public IActionResult CreateNewTextResourceVersion(long textId, [FromBody] CreateTextVersionRequestContract request)
        {
            m_authorizationManager.AuthorizeResource(textId, PermissionFlag.EditProject);

            var result = m_projectContentManager.CreateNewTextResourceVersion(textId, request);

            return(Ok(result));
        }
Exemple #3
0
 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;
 }
Exemple #4
0
        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);
        }
Exemple #6
0
        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;
            }
        }
Exemple #7
0
        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));
        }
Exemple #8
0
        public SaveTextResponse SaveTextFullValidate(long textId, CreateTextVersionRequestContract request)
        {
            var isValid = HasOnlyValidCommentsWithValues(request.Text, textId);

            return(!isValid?ValidationFailResponse() : SaveWithoutValidation(textId, request));
        }
Exemple #9
0
        public SaveTextResponse SaveTextValidateSyntax(long textId, CreateTextVersionRequestContract request)
        {
            var isValidSyntax = HasOnlyValidCommentSyntax(request.Text);

            return(!isValidSyntax?ValidationFailResponse() : SaveWithoutValidation(textId, request));
        }