예제 #1
0
        private async Task <List <BlogPost> > GetPostsFromFileAsync()
        {
            var result      = new List <BlogPost>();
            var postDirPath = Path.Combine(_appConfig.AssetRepoLocalDir, BlogConstant.PostGitHubPath);

            if (!Directory.Exists(postDirPath))
            {
                return(result);
            }

            foreach (var postItem in Directory.EnumerateFiles(
                         postDirPath,
                         $"*{BlogConstant.PostMarkdownExtension}"))
            {
                try
                {
                    var post = await _postParser.FromTextAsync(await File.ReadAllTextAsync(postItem), Path.GetFileNameWithoutExtension(postItem));

                    result.Add(post);
                }
                catch (Exception ex)
                {
                    _logger.LogCritical(ex, "Parse post failed. Post full path = {PostPath}.", postItem);
                }
            }

            return(result);
        }