예제 #1
0
 public BenchmarkResult(Repository repository, RepositoryTarget repositoryTarget, string summary, string output)
 {
     Repository       = repository;
     RepositoryTarget = repositoryTarget;
     Summary          = summary;
     Output           = output;
 }
예제 #2
0
        public async Task <GitCommitsModel> GetCommits(RepositoryTarget target, DateTime from, DateTime to, string targetType = "branch", string targetName = "master")
        {
            var response = await this.restClient.GetAsync(
                GetRepositoryApiUrl(target) + $"commits?searchCriteria.itemVersion.versionType={targetType}&searchCriteria.itemVersion.version={targetName}&searchCriteria.toDate={to:M/d/yyyy HH:mm:ss}&searchCriteria.fromDate={from:M/d/yyyy HH:mm:ss}&api-version=4.0");

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <GitCommitsModel>(response.Body));
            }
            return(null);
        }
예제 #3
0
        public async Task <PullRequestsModel> GetPullRequests(RepositoryTarget target, string status = "open", string targetName = "master")
        {
            var response = await this.restClient.GetAsync(
                GetRepositoryApiUrl(target) + $"pullrequests?searchCriteria.status={status}&searchCriteria.targetRefName={targetName}&api-version=4.0");

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <PullRequestsModel>(response.Body));
            }
            return(null);
        }
예제 #4
0
        public async Task <List <BranchModel> > GetBranchList(RepositoryTarget target)
        {
            var response = await this.restClient.GetAsync(
                GetRepositoryApiUrl(target) + $"refs?api-version=4.0");

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <BranchResponseModel>(response.Body)?.value);
            }
            return(null);
        }
예제 #5
0
        private string GetRepositoryNameForTarget(RepositoryTarget target)
        {
            switch (target)
            {
            case RepositoryTarget.Upstream: {
                return(RepositoryName);
            }

            case RepositoryTarget.Bot: {
                return(BotRepositoryName);
            }
            }

            throw new InvalidOperationException();
        }
예제 #6
0
        public async Task <GitCommitsModel> GetCommitsFromPullRequest(string pullRequestId, RepositoryTarget target)
        {
            var response = await this.restClient.GetAsync(
                GetRepositoryApiUrl(target) + $"pullrequests/{pullRequestId}/commits?api-version=4.0");

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <GitCommitsModel>(response.Body));
            }
            return(null);
        }
예제 #7
0
 private string GetRepositoryApiUrl(RepositoryTarget target)
 {
     return($"{target.Organization}/{target.ProjectId}/_apis/git/repositories/{target.RepositoryId}/");
 }
예제 #8
0
 public Task <bool> IsCollaborator(RepositoryTarget repositoryTarget, string user)
 {
     return(client.Repository.Collaborator.IsCollaborator(GetRepositoryOwnerForTarget(repositoryTarget), GetRepositoryNameForTarget(repositoryTarget), user));
 }
예제 #9
0
 public Task <Repository> GetRepository(RepositoryTarget repositoryTarget)
 {
     return(client.Repository.Get(GetRepositoryOwnerForTarget(repositoryTarget), GetRepositoryNameForTarget(repositoryTarget)));
 }
예제 #10
0
 public Task <IReadOnlyList <IssueComment> > GetIssueComments(RepositoryTarget repositoryTarget, int issueId)
 {
     return(client.Issue.Comment.GetAllForIssue(GetRepositoryOwnerForTarget(repositoryTarget), GetRepositoryNameForTarget(repositoryTarget), issueId));
 }
예제 #11
0
 public Task <IssueComment> CreateComment(RepositoryTarget repositoryTarget, int issueId, string commentBody)
 {
     return(client.Issue.Comment.Create(GetRepositoryOwnerForTarget(repositoryTarget), GetRepositoryNameForTarget(repositoryTarget), issueId, commentBody));
 }
예제 #12
0
 public Task <Issue> GetIssue(RepositoryTarget repositoryTarget, int id)
 {
     return(client.Issue.Get(GetRepositoryOwnerForTarget(repositoryTarget), GetRepositoryNameForTarget(repositoryTarget), id));
 }
예제 #13
0
 public ExecuteBenchmarkCommand(string benchmark, Repository repository, RepositoryTarget repositoryTarget)
 {
     Benchmark        = benchmark;
     Repository       = repository;
     RepositoryTarget = repositoryTarget;
 }