Example #1
0
        public static GitDbContext CreateFromLocal(PineBlogGitDbOptions options)
        {
            var credentials = GetCredentials(options);

            string repositoryPath = Repository.Discover(options.LocalRepositoryBasePath);

            if (repositoryPath == null)
            {
                return(null);
            }

            var repository = new Repository(options.LocalRepositoryBasePath);

            return(new GitDbContext(repository, credentials, repositoryPath));
        }
        public async Task SingleOrDefaultAsync_Should_ReturnNull_WhenNoBlogSettingsFile()
        {
            var options = new PineBlogGitDbOptions()
            {
                Branch = "test"
            };
            var optionsMock = new Mock <IOptionsSnapshot <PineBlogGitDbOptions> >();

            optionsMock.Setup(m => m.Value).Returns(options);
            var gitDbContext = ServiceProvider.GetRequiredService <GitDbContext>();

            var blogSettingsRepository = new BlogSettingsRepository(gitDbContext, optionsMock.Object);

            var result = await blogSettingsRepository.SingleOrDefaultAsync(CancellationToken.None);

            result.Should().BeNull();
        }
Example #3
0
        public static GitDbContext Create(PineBlogGitDbOptions options)
        {
            var credentials = GetCredentials(options);

            string repositoryPath = Repository.Discover(options.LocalRepositoryBasePath);

            if (repositoryPath == null)
            {
                var cloneOptions = new CloneOptions();
                cloneOptions.CredentialsProvider = (_url, _user, _cred) => credentials;

                var sourceUrl = new Uri(options.RepositoryUrl).AbsoluteUri;
                repositoryPath = Repository.Clone(sourceUrl, options.LocalRepositoryBasePath, cloneOptions);
                if (repositoryPath == null)
                {
                    throw new NotFoundException <GitDbContext>($"Could not clone repository \"{sourceUrl}\".");
                }
            }

            var repository = new Repository(options.LocalRepositoryBasePath);

            return(new GitDbContext(repository, credentials, repositoryPath));
        }
Example #4
0
 protected static Credentials GetCredentials(PineBlogGitDbOptions options)
 {
     //return new UsernamePasswordCredentials { Username = settings.UserName, Password = settings.Password };
     return(new DefaultCredentials());
 }