private async ValueTask <BookRecord> GetBookRecord(RepositoryContentInfo content)
        {
            if (_gitBookRecordCache.TryGetValue(content.Sha, out var gitBookRecord))
            {
                return(gitBookRecord.BookRecord);
            }
            _logger.Info($"Cache miss for {content.Name} with sha {content.Sha}");
            gitBookRecord = await GetBookRecordFromApi(content);

            _gitBookRecordCache.TryAdd(content.Sha, gitBookRecord);
            return(gitBookRecord.BookRecord);
        }
        private async Task <GitBookRecord> GetBookRecordFromApi(RepositoryContentInfo content)
        {
            var rawBookRecord = await _githubFileClient.GetRepositoryTextFile(content.DownloadUrl);

            var bookRecord = BookRecordParser.CreateBookRecordFromMarkdown(
                new MarkdownFile {
                Content = rawBookRecord
            });

            return(new GitBookRecord {
                Sha = content.Sha, FileName = content.Name, BookRecord = bookRecord
            });
        }
Beispiel #3
0
        public static ContentItem ToContentItem(this RepositoryContentInfo repositoryContent)
        {
            ContentItem retVal = null;

            if (repositoryContent.Type == ContentType.File)
            {
                retVal      = new ContentItem();
                retVal.Name = repositoryContent.Name;
                retVal.Path = repositoryContent.Path;
            }

            return(retVal);
        }