示例#1
0
        /// <summary>
        /// Get all blog posts on disk.
        /// </summary>
        /// <returns></returns>
        public IEnumerable<BlogPost> ListBlogPostsOnDisk()
        {
            var localFileCache = new LocalFileCache();

            foreach (var blogFileOnDisk in localFileCache.ListItemsOnDisk())
            {
                yield return BlogPostParsing.ConvertFileToBlogPost(blogFileOnDisk.Key, blogFileOnDisk.Value);
            }
        }
示例#2
0
        public async Task<ActionResult> UpdateCacheFromGitHub()
        {
            string postedJson = string.Empty;

            try
            {
                using (var streamReader = new System.IO.StreamReader(Request.InputStream))
                {
                    postedJson = streamReader.ReadToEnd();
                }
                GitHubPostedCommit posted = JsonConvert.DeserializeObject<GitHubPostedCommit>(postedJson);
                IEnumerable<BlogPost> newposts = Enumerable.Empty<BlogPost>();
                //try
                //{
                    var gh = new Data.GitHub();
                    newposts = await gh.GetItemsForBranchCommit(posted);

                    var localFileCache = new LocalFileCache();

                    //delete items if any.
                    foreach (string blogUrlSlug in posted.RemovedPosts)
                    {
                        localFileCache.RemovePost(blogUrlSlug);
                    }
                //}
                //catch (Exception) { }
                
                try
                {
                    await SyncAzureIndex(newposts, posted.RemovedPosts);
                }
                catch (Exception) { }


                return new HttpStatusCodeResult(HttpStatusCode.OK);
            }
            catch (Exception ex)
            {
                return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Message);
            }

        }
示例#3
0
        public async Task CanProcessPostedWebhook()
        {

            GitHubPostedCommit posted = JsonConvert.DeserializeObject<GitHubPostedCommit>(GitHubJsonMessages.GitHubCommitValidMsg);

            var gh = new Thyme.Web.Data.GitHub();
            var newposts =  await gh.GetItemsForBranchCommit(posted);

            LocalFileCache lfc = new LocalFileCache();

            foreach (var blogPostSlug in posted.RemovedPosts)
            {
                lfc.RemovePost(blogPostSlug);
            }

            foreach (BlogPost blogPost in newposts)
            {
                lfc.SaveLocalItem(blogPost);
            }
            

        }
示例#4
0
        public async Task SaveAllItemsFromTree(TreeItem subTree)
        {
            var treesClient = new TreesClient(apiConn);
            var tree = await treesClient.Get(Config.GitHubOwner, Config.GitHubRepo, subTree.Sha);
            LocalFileCache local = new LocalFileCache();
            foreach (var item in tree.Tree.Where(x => local.LocalItemExists(subTree.Path, x.Path) == false))
            {
                var blob = await GetBlobContents(item.Sha);

                local.SaveLocalItem(new DiskSaveItem { FileContents = Convert.FromBase64String(blob.Content), SubDirectory = subTree.Path, FileName = item.Path });
            }
        }
示例#5
0
 public void EnsureExistsOnDisk(DiskSaveItem saveItem)
 {
     LocalFileCache local = new LocalFileCache();
     local.SaveLocalItem(saveItem);
 }