Example #1
0
        public async Task <ActionResult> UpdateFileNode(string content, Guid id)
        {
            if (id == null)
            {
                return(BadRequest());
            }
            // 判断是否存在
            var currentFileNode = _context.FileNodes.SingleOrDefault(f => f.Id == id);

            if (currentFileNode == null)
            {
                return(NotFound());
            }

            // 更新github 文件内容
            var updateFileDataModel = new NewFileDataModel
            {
                Content = string.IsNullOrEmpty(content) ? $"目录:{currentFileNode.FileName}" : content,
                Message = $"README更新",
                Path    = currentFileNode.Path + "/README.md",
                Sha     = currentFileNode.SHA
            };

            // 更新内容
            currentFileNode.ReadmeContent = content;

            updateFileDataModel.Path = WebUtility.UrlEncode(updateFileDataModel.Path);
            var createFileResult = await _github.CreateFile(updateFileDataModel);

            if (createFileResult != null)
            {
                currentFileNode.SHA        = createFileResult.Sha;
                currentFileNode.GithubLink = createFileResult.Url;
            }
            _context.SaveChanges();
            return(RedirectToAction(nameof(PractknowsController.FileNodes), new { id = currentFileNode.Id }));
        }
Example #2
0
        public async Task <ActionResult> AddFileNode(string name, string content, Guid?id)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(BadRequest());
            }
            name = name.Trim();
            // 判断是否存在
            var exist = _context.FileNodes.SingleOrDefault(f => f.FileName.Equals(name));

            if (exist == null)
            {
                var parentNode = new FileNode();
                if (id != null)
                {
                    parentNode = _context.FileNodes.SingleOrDefault(f => f.Id == id);
                }
                // 构造github 新文件内容
                var newFileDataModel = new NewFileDataModel
                {
                    Content = string.IsNullOrEmpty(content) ? $"目录:{name}" : content,
                    Message = $"新建目录:{name}",
                    Path    = $"{name}/README.md"
                };

                var newFileNode = new FileNode
                {
                    FileName      = name,
                    IsFile        = false,
                    ReadmeContent = content
                };
                // 有父节点时
                if (parentNode.FileName != null)
                {
                    newFileNode.ParentNode = parentNode;
                    var paths = GetFilePath(parentNode.Id)?.Select(p => p.FileName)?.ToArray();
                    // 设置路径
                    newFileNode.Path      = string.Join("/", paths) + "/" + name;
                    newFileDataModel.Path = string.Join("/", paths) + "/" + name + "/readme.md";
                }
                else
                {
                    newFileNode.Path = name;
                }
                newFileDataModel.Path = WebUtility.UrlEncode(newFileDataModel.Path);
                var createFileResult = await _github.CreateFile(newFileDataModel);

                if (createFileResult != null)
                {
                    newFileNode.SHA        = createFileResult.Sha;
                    newFileNode.GithubLink = createFileResult.Url;
                }
                _context.Add(newFileNode);
                _context.SaveChanges();
                return(RedirectToAction(nameof(PractknowsController.FileNodes), new { id = newFileNode.Id }));
            }
            else
            {
                return(RedirectToAction(nameof(PractknowsController.FileNodes), new { id = exist.Id }));
            }
        }