Ejemplo n.º 1
0
        private async Task <RepositoryContentEntry> GetRepositoryContentEntry(RepositoryReference repoSpec, string path)
        {
            var entryKey = new RepositoryPathReference
            {
                RepositoryOwner = repoSpec.RepositoryOwner,
                RepositoryName  = repoSpec.RepositoryName,
                TreeReference   = repoSpec.TreeReference,
                Path            = path
            };
            var entryObj = await RepositoryCache.GetOrCreateAsync(
                entryKey, CreateCachedRepositoryContentEntry
                ).ConfigureAwait(continueOnCapturedContext: false);

            if (entryObj.Contents is null)
            {
                var entryContents = await DownloadRepositoryContents(repoSpec, path)
                                    .ConfigureAwait(continueOnCapturedContext: false);

                AddRepositoryContentsToCache(repoSpec, entryContents);
                entryObj.Contents = entryContents;
            }
            return(entryObj);
        }