private PullRequest GetPullRequest(int pullRequestId)
        {
            var pullRequests = _bitBucketClient.RepositoriesEndPoint()
                               .PullReqestsResource(_programArgs.BitBucketAccount, _programArgs.BitBucketRepository);

            return(pullRequests.PullRequestResource(pullRequestId).GetPullRequest() as PullRequest);
        }
コード例 #2
0
        public List <Repository> GetAllRepos(string usernameOrTeamName)
        {
            RepositoriesEndPoint repoEndPoint = m_sharpBucket2.RepositoriesEndPoint();
            List <Repository>    allRepos     = null;

            if (!string.IsNullOrEmpty(usernameOrTeamName))
            {
                allRepos = repoEndPoint.ListRepositories(usernameOrTeamName);
            }

            return(allRepos);
        }
コード例 #3
0
        public void Client_WithNoAuth_ShouldReadPublicRepos()
        {
            var client = new SharpBucketV2();
            var ep     = client.RepositoriesEndPoint();
            var repos  = ep.ListPublicRepositories(5);

            repos.Count.ShouldBe(5);
        }
コード例 #4
0
        public void NoAuthentication_NotExplicitlyCalled_ShouldReadPublicRepos()
        {
            var sharpBucket = new SharpBucketV2();
            var ep          = sharpBucket.RepositoriesEndPoint();
            var repos       = ep.ListPublicRepositories(5);

            repos.Count.ShouldBe(5);
        }
コード例 #5
0
        public void Client_WithNoAuth_ShouldRetrieveTortoise()
        {
            var client = new SharpBucketV2();
            var ep     = client.RepositoriesEndPoint();
            var repo   = ep.RepositoryResource("tortoisehg", "thg").GetRepository();

            repo.ShouldNotBeNull();
            repo.full_name.ShouldBe("tortoisehg/thg");
        }
コード例 #6
0
        public void OAuth2ClientCredentials_AllowToListPrivateRepositories()
        {
            var privateRepo = SampleRepositories.PrivateTestRepository.GetRepository();

            var sharpBucket = new SharpBucketV2();

            sharpBucket.OAuth2ClientCredentials(TestHelpers.OAuthConsumerKey, TestHelpers.OAuthConsumerSecretKey);
            var accountRepos = sharpBucket.RepositoriesEndPoint().ListRepositories(TestHelpers.AccountName);

            accountRepos.ShouldNotBe(null);
            accountRepos.Any(p => p.is_private == true && p.name == privateRepo.name).ShouldBe(true);
        }
コード例 #7
0
        public void BasicAuthentication_BasicAuthentication_AllowToListPrivateRepositories()
        {
            var privateRepo = SampleRepositories.PrivateTestRepository.GetRepository();

            var sharpBucket = new SharpBucketV2();

            sharpBucket.BasicAuthentication(TestHelpers.UserName, TestHelpers.Password);
            var accountRepos = sharpBucket.RepositoriesEndPoint().ListRepositories(TestHelpers.AccountName);

            accountRepos.ShouldNotBe(null);
            accountRepos.Any(p => p.is_private == true && p.name == privateRepo.name).ShouldBe(true);
        }
コード例 #8
0
        private void PullRequest(ref Repositorios_VM repositorio, ref List <PullProjeto> ListPull, string tipo, Projeto objprojeto)
        {
            Repositorio codRepositorio;

            Repositorio objeto_repositorio;

            objeto_repositorio = objprojeto.Repositorio.Where(x => x.Tipo.Nome == tipo).SingleOrDefault();

            var sharpBucket = new SharpBucketV2();

            sharpBucket.OAuth2ClientCredentials(ConfigurationManager.AppSettings["consumerKey"], ConfigurationManager.AppSettings["consumerSecretKey"]);
            codRepositorio = objprojeto.Repositorio.Where(x => x.Tipo.Nome == tipo).SingleOrDefault();

            if (tipo == "APP")
            {
                repositorio.VersaoAPP = (sharpBucket.RepositoriesEndPoint().TagResource(codUserAPI, codRepositorio.Codigo).ListTags().OrderByDescending(x => x.date).Select(x => x.name).FirstOrDefault() ?? repositorio.VersaoAPP);
            }
            else
            {
                repositorio.VersaoAPI = (sharpBucket.RepositoriesEndPoint().TagResource(codUserAPI, codRepositorio.Codigo).ListTags().OrderByDescending(x => x.date).Select(x => x.name).FirstOrDefault() ?? repositorio.VersaoAPI);
            }

            ListParameters parameters = new ListParameters
            {
                Filter = $"destination.branch.name = \"master\"",
                Sort   = "-updated_on",
                Max    = 1
            };

            var pullRequest = sharpBucket.RepositoriesEndPoint().PullRequestsResource(codUserAPI, objeto_repositorio.Codigo).ListPullRequests(parameters).FirstOrDefault();


            if (pullRequest != null && !string.IsNullOrEmpty(pullRequest.title))
            {
                ListPull.Add(new PullProjeto(pullRequest.title, pullRequest.created_on));
            }
        }
        private void IndexProject(
            SrcFileInfo searchFile,
            ConcurrentDictionary <PackageReference, HashSet <RepoInfo> > graph,
            IScanProgress scanProgress)
        {
            var fileName = Path.GetFileName(searchFile.path);

            if (!fileName.EndsWith(".csproj"))
            {
                return;
            }

            var repoSlug = ExtractSlugFromUrl(searchFile.links.self.href);

            if (_skipRepos.Contains(repoSlug))
            {
                Console.WriteLine($"Skipped {repoSlug}");
                return;
            }

            var repoResource = _client.RepositoriesEndPoint().RepositoryResource(_bbAccount, repoSlug);

            if (!_reposCache.TryGetValue(repoSlug, out var repo))
            {
                var repoInfo = repoResource.GetRepository();
                var fileLink = $"{repoInfo.links.html.href}/src/master/{searchFile.path}";
                repo = RepoInfo.Parse(repoInfo.slug, fileLink);
                _reposCache.Add(repoSlug, repo);
                scanProgress.UpdateRepoProgress();
            }

            var projectContent = repoResource.SrcResource().GetFileContent(searchFile.path);
            var nugetRefs      = ProjectFileParser.Parse(projectContent);

            foreach (var nugetRef in nugetRefs)
            {
                if (!graph.TryGetValue(nugetRef, out var repoInfos))
                {
                    repoInfos = new HashSet <RepoInfo>();
                }

                repoInfos.Add(repo);
                graph[nugetRef] = repoInfos;
            }

            scanProgress.UpdateProjectProgress();

            Console.WriteLine($"Processed {fileName} from {repo.Name}");
        }
コード例 #10
0
        private void IndexProject(SrcFileInfo searchFile, ConcurrentDictionary <PackageReference, HashSet <RepoInfo> > graph)
        {
            var fileName = Path.GetFileName(searchFile.path);

            if (!fileName.EndsWith(".csproj"))
            {
                return;
            }

            var repoSlug     = ExtractSlugFromUrl(searchFile.links.self.href);
            var repoResource = _client.RepositoriesEndPoint().RepositoryResource(_bbAccount, repoSlug);

            if (!_reposCache.TryGetValue(repoSlug, out var repo))
            {
                var repoInfo = repoResource.GetRepository();
                repo = RepoInfo.Parse(repoInfo.slug, repoInfo.links.html.href);
                _reposCache.Add(repoSlug, repo);
                ++_foundReposCount;
            }

            var projectContent = repoResource.SrcResource().GetFileContent(searchFile.path);
            var nugetRefs      = ProjectFileParser.Parse(projectContent);

            foreach (var nugetRef in nugetRefs)
            {
                if (!graph.TryGetValue(nugetRef, out var repoInfos))
                {
                    repoInfos = new HashSet <RepoInfo>();
                }

                repoInfos.Add(repo);
                graph[nugetRef] = repoInfos;
            }

            ++_scannedProjectFilesCount;

            Console.WriteLine($"Processed {fileName} from {repo.Name}");
        }
コード例 #11
0
        public void NoAuthentication_ExplicitlyCalledAfterAnEffectiveAuthentication_ShouldReadPublicReposButNotPrivateOnes()
        {
            var privateRepo = SampleRepositories.PrivateTestRepository.GetRepository();
            var publicRepo  = SampleRepositories.EmptyTestRepository.GetRepository();

            var sharpBucket          = new SharpBucketV2();
            var repositoriesEndPoint = sharpBucket.RepositoriesEndPoint();

            sharpBucket.OAuth2ClientCredentials(TestHelpers.OAuthConsumerKey, TestHelpers.OAuthConsumerSecretKey);
            var accountRepos = repositoriesEndPoint.ListRepositories(TestHelpers.AccountName);

            accountRepos.ShouldNotBe(null);
            accountRepos.Any(p => p.name == privateRepo.name).ShouldBe(true);
            accountRepos.Any(p => p.is_private == true).ShouldBe(true);
            accountRepos.Any(p => p.is_private == false && p.name == publicRepo.name).ShouldBe(true);

            sharpBucket.NoAuthentication();
            accountRepos = repositoriesEndPoint.ListRepositories(TestHelpers.AccountName);
            accountRepos.ShouldNotBe(null);
            accountRepos.Any(p => p.name == privateRepo.name).ShouldBe(false);
            accountRepos.Any(p => p.is_private == true).ShouldBe(false);
            accountRepos.Any(p => p.is_private == false && p.name == publicRepo.name).ShouldBe(true);
        }
コード例 #12
0
        public RepositoriesEndPoint Authenticate(string clientId, string secret)
        {
            _sharpBucketV2.OAuth2ClientCredentials(clientId, secret);

            return(_sharpBucketV2.RepositoriesEndPoint());
        }
コード例 #13
0
        public override Task <bool> ReportPackageSourceAudit()
        {
            if (!AuditOptions.ContainsKey("BitBucketReportAccount") || !AuditOptions.ContainsKey("BitBucketReportName") || !AuditOptions.ContainsKey("BitBucketKey"))
            {
                throw new ArgumentException("The BitBucketReportAccount, BitBucketReportName, and BitBucketReportKey audit options must be present.");
            }
            string key = (string)AuditOptions["BitBucketKey"];

            string[] k = key.Split('|');
            if (k.Count() != 2)
            {
                throw new ArgumentException("The BitBucketReportKey audit option must have the format consumer_key|secret.");
            }
            string consumer = k[0], secret = k[1];
            string account    = (string)AuditOptions["BitBucketReportAccount"];
            string repository = (string)AuditOptions["BitBucketReportName"];

            if (AuditOptions.ContainsKey("BitBucketReportTitle"))
            {
                IssueTitle = (string)AuditOptions["BitBucketReportTitle"];
            }
            else
            {
                IssueTitle = string.Format("[DevAudit] {0} audit on {1} {2}", Source.PackageManagerLabel, DateTime.UtcNow.ToShortDateString(), DateTime.UtcNow.ToShortTimeString());
            }
            SharpBucketV2 sharp_bucket = new SharpBucketV2();

            sharp_bucket.OAuth2LeggedAuthentication(consumer, secret);
            RepositoriesEndPoint repository_endpoint = sharp_bucket.RepositoriesEndPoint(account, repository);
            IssuesResource       r;

            try
            {
                r = repository_endpoint.IssuesResource();
            }
            catch (Exception e)
            {
                AuditEnvironment.Error(e, "Could not get issues resource for repository {0}/{1}.", account, repository);
                return(Task.FromResult(false));
            }
            BuildPackageSourceAuditReport();
            Issue issue = new Issue()
            {
                title    = IssueTitle,
                content  = IssueText.ToString(),
                status   = "new",
                priority = "major",
                kind     = "bug"
            };

            try
            {
                Issue i = r.PostIssue(issue);
                if (i == null)
                {
                    AuditEnvironment.Error("Could not post issue to repository {0}/{1}.", account, repository);
                    return(Task.FromResult(false));
                }
                else
                {
                    AuditEnvironment.Success("Created issue {0} at {1}.", i.title, i.resource_uri);
                }
            }
            catch (Exception e)
            {
                AuditEnvironment.Error(e, "Could not post issue to repository {0}/{1}.", account, repository);
                return(Task.FromResult(false));
            }

            return(Task.FromResult(true));
        }
コード例 #14
0
 public void Init()
 {
     sharpBucket          = TestHelpers.GetV2ClientAuthenticatedWithOAuth();
     repositoriesEndPoint = sharpBucket.RepositoriesEndPoint();
     repositoryResource   = repositoriesEndPoint.RepositoryResource(ACCOUNT_NAME, REPOSITORY_NAME);
 }
コード例 #15
0
 public void Init()
 {
     sharpBucket          = TestHelpers.GetV2ClientAuthenticatedWithOAuth();
     repositoriesEndPoint = sharpBucket.RepositoriesEndPoint();
 }
コード例 #16
0
 /// <summary>
 /// Gets the list of the team's repositories.
 /// Private repositories only appear on this list if the caller is authenticated and is authorized to view the repository.
 /// </summary>
 /// <param name="parameters">Parameters for the query.</param>
 public List <Repository> ListRepositories(ListParameters parameters = null)
 {
     // The /teams/{username}/repositories request redirect to the repositories/{username}/ request
     // So to improve performances we directly do the the call to the repositories endpoint
     return(_sharpBucketV2.RepositoriesEndPoint().ListRepositories(_teamName, parameters ?? new ListParameters()));
 }
コード例 #17
0
        private static void TestRestRepositoriesEndPoint(SharpBucketV2 sharpBucket)
        {
            var repositoriesEndPoint = sharpBucket.RepositoriesEndPoint();
            var repositories         = repositoriesEndPoint.ListRepositories(accountName);
            var publicRepositories   = repositoriesEndPoint.ListPublicRepositories();
            var repositoryResource   = repositoriesEndPoint.RepositoryResource(accountName, repository);
            //var repoInfo = new RepositoryInfo();
            //var newRepository = repositoriesEndPoint.PutRepository(repo, accountName, repository);
            //var deletedRepository = repositoriesEndPoint.DeleteRepository(newRepository, accountName, repository);
            var    watchers          = repositoryResource.ListWatchers();
            var    forks             = repositoryResource.ListForks();
            var    branchRestictions = repositoryResource.ListBranchRestrictions();
            var    newRestrictions   = repositoryResource.PostBranchRestriction(new BranchRestriction());
            int    restrictionId     = 1;
            var    restriction       = repositoryResource.GetBranchRestriction(restrictionId);
            var    newRestiction     = repositoryResource.PutBranchRestriction(new BranchRestriction());
            var    deletedRestiction = repositoryResource.DeleteBranchRestriction(restrictionId);
            var    diff           = repositoryResource.GetDiff(null);
            var    patch          = repositoryResource.GetPatch(null);
            var    commits        = repositoryResource.ListCommits();
            string commitId       = "sdfsdf";
            var    commit         = repositoryResource.GetCommit(commitId);
            var    commitComments = repositoryResource.ListCommitComments(commitId);
            int    commentId      = 10;
            var    commitComment  = repositoryResource.GetCommitComment(commitId, commentId);
            var    commitApproval = repositoryResource.ApproveCommit(commitId);
            var    deleteApproval = repositoryResource.DeleteCommitApproval(commitId);

            var r               = repositoriesEndPoint.RepositoryResource(accountName, repository);
            var dr              = r.DeleteRepository();
            var w               = r.ListWatchers();
            var f               = r.ListForks();
            var br              = r.ListBranchRestrictions();
            var gr              = r.GetBranchRestriction(restrictionId);
            var nr              = r.PostBranchRestriction(new BranchRestriction());
            var dbr             = r.DeleteBranchRestriction(restrictionId);
            var diff2           = r.GetDiff(new object());
            var patch2          = r.GetPatch(new object());
            var commits2        = r.ListCommits();
            var commit2         = r.GetCommit(commitId);
            var commitComments2 = r.ListCommitComments(commitId);
            var commitComment2  = r.GetCommitComment(commitId, commentId);
            var commitApproval2 = r.ApproveCommit(commitId);
            var deleteApproval2 = r.DeleteCommitApproval(commitId);

            var pullRequestsResource = r.PullRequestsResource();
            var pullRequests         = pullRequestsResource.ListPullRequests();
            var source = new Source {
                branch = new Branch {
                    name = "develop"
                },
                repository = new Repository {
                    full_name = repository
                }
            };
            var destination = new Source {
                branch = new Branch {
                    name = "master"
                },
                commit = new Commit {
                    hash = "56c3aca"
                }
            };
            var newRequest = new PullRequest {
                title       = "testing new one",
                description = "My new description",
                source      = source,
                destination = destination
            };
            //var newPullRequest = repositoriesEndPoint.PostPullRequest(accountName, repository, newRequest);
            //var updatedPullRequest = repositoriesEndPoint.PutPullRequest(accountName, repository, new PullRequest());
            //var pullRequestId = 1;
            //var pullRequest = repositoriesEndPoint.GetPullRequest(accountName, repository, pullRequestId);
            //pullRequest.title = "HEHEHEH";
            //var updatedPullRequest = repositoriesEndPoint.PutPullRequest(accountName, repository, pullRequest);

            //var commitsInPullRequest = repositoriesEndPoint.ListPullRequestCommits(accountName, repository, pullRequestId);
            //var postPullRequestApproval = repositoriesEndPoint.ApprovePullRequest(accountName, repository, pullRequestId);
            //var deletePullRequest = repositoriesEndPoint.RemovePullRequestApproval(accountName, repository, pullRequestId);
            //var getDiffForPullRequest = repositoriesEndPoint.GetDiffForPullRequest(accountName, repository, pullRequestId);
            //var pullRequestLog = repositoriesEndPoint.GetPullRequestLog(accountName, repository);
            //var pullRequestActivity = repositoriesEndPoint.GetPullRequestActivity(accountName, repository, pullRequestId);
            //var acceptPullRequest = repositoriesEndPoint.AcceptAndMergePullRequest(accountName, repository, pullRequestId);
            //var declinePullRequest = repositoriesEndPoint.DeclinePullRequest(accountName, repository, pullRequestId);
            //var pullRequestComments = repositoriesEndPoint.ListPullRequestComments(accountName, repository, pullRequestId);
            //var commentId = 10;
            //var pullRequestComment = repositoriesEndPoint.GetPullRequestComment(accountName, repository, pullRequestId, commentId);

            //var pullRequestsEP = repositoriesEndPoint.PullReqestsResource(accountName, repository);
            //var PRs = pullRequestsEP.ListPullRequests();
            //var newPR = pullRequestsEP.PostPullRequest(new PullRequest());
            //var updatedPR = pullRequestsEP.PutPullRequest(new PullRequest());
            //var PRId = 10;
            //var PR = pullRequestsEP.GetPullRequest(PRId);
            //var commitsInPR = pullRequestsEP.ListPullRequestCommits(PRId);
            //var postPRApproval = pullRequestsEP.ApprovePullRequest(PRId);
            //var deletePR = pullRequestsEP.RemovePullRequestApproval(PRId);
            //var getDiffForPR = pullRequestsEP.GetDiffForPullRequest(PRId);
            //var PRLog = pullRequestsEP.GetPullRequestLog();
            //var PRActivity = pullRequestsEP.GetPullRequestActivity(PRId);
            //var acceptPR = pullRequestsEP.AcceptAndMergePullRequest(PRId);
            //var declinePR = pullRequestsEP.DeclinePullRequest(PRId);
            //var PRComments = pullRequestsEP.ListPullRequestComments(PRId);
            //var cId = 10;
            //var PRComment = pullRequestsEP.GetPullRequestComment(PRId, cId);

            //var PRId2 = 10;
            //var pullRequestEP = pullRequestsEP.PullRequestEndPoint(PRId);
            //var PR2 = pullRequestEP.GetPullRequest();
            //var commitsInPR2 = pullRequestEP.ListPullRequestCommits();
            //var postPR2Approval = pullRequestEP.ApprovePullRequest();
            //var deletePR2 = pullRequestEP.RemovePullRequestApproval();
            //var getDiffForPR2 = pullRequestEP.GetDiffForPullRequest();
            //var PR2Activity = pullRequestEP.GetPullRequestActivity();
            //var acceptPR2 = pullRequestEP.AcceptAndMergePullRequest();
            //var declinePR2 = pullRequestEP.DeclinePullRequest();
            //var PR2Comments = pullRequestEP.ListPullRequestComments();
            //var cId2 = 10;
            //var PR2Comment = pullRequestEP.GetPullRequestComment(cId2);
        }