async Task<SaveResult> CreateOrUpdateGithubPost(string postTitle, string content, IEnumerable<FileReference> referencedFiles, BlogSetting blog) { var treeToUpload = new GitTree(); var imagesToUpload = referencedFiles.Where(f=>!f.Saved).ToList(); if (imagesToUpload.Count > 0) { foreach (var imageToUpload in imagesToUpload) { var imageContent = Convert.ToBase64String(File.ReadAllBytes(imageToUpload.FullPath)); var item = new GitFile { type = "tree", path = imageToUpload.FullPath, mode = ((int)GitTreeMode.SubDirectory), content = imageContent }; treeToUpload.tree.Add(item); } } var gitFile = new GitFile { path = postTitle, content = content, mode = (int)GitTreeMode.File, type = "blob" }; treeToUpload.tree.Add(gitFile); var newTree = await githubApi.NewTree(blog.Token, blog.Username, blog.WebAPI, blog.BlogInfo.blogid, treeToUpload); var uploadedFile = newTree.Item1.tree.Single(t => t.path == gitFile.path); foreach (var fileReference in imagesToUpload) { fileReference.Saved = true; } return new SaveResult { Id = uploadedFile.sha, NewDocumentContent = content }; }
async Task<string> CreateOrUpdateGithubPost(string postTitle, string content, ICollection<string> imagesToUpload, BlogSetting blog) { var treeToUpload = new GitTree(); if (imagesToUpload.Count > 0) { foreach (var imageToUpload in imagesToUpload) { var imageContent = Convert.ToBase64String(File.ReadAllBytes(imageToUpload)); var item = new GitFile { type = "tree", path = imageToUpload, mode = ((int)GitTreeMode.SubDirectory), content = imageContent }; treeToUpload.tree.Add(item); } } var gitFile = new GitFile { path = postTitle, content = content, mode = (int)GitTreeMode.File, type = "blob" }; treeToUpload.tree.Add(gitFile); var newTree = await githubApi.NewTree(blog.Token, blog.Username, blog.WebAPI, blog.BlogInfo.blogid, treeToUpload); var uploadedFile = newTree.Item1.tree.Single(t => t.path == gitFile.path); return uploadedFile.sha; }