public async Task<string> SetStatus(string owner, string repository, string reference, string context, CommitState state, string description, string targetUrl) { if (String.IsNullOrEmpty(description)) { // Get current status with the same context to preserve description CombinedCommitStatus combined = await _client.Repository.CommitStatus.GetCombined(owner, repository, reference); var status = combined.Statuses.First(s => s.Context == context); description = status.Description; } NewCommitStatus newStatus = new NewCommitStatus() { Context = context, State = state, Description = description, TargetUrl = new Uri(targetUrl) }; try { var rslt = await _client.Repository.CommitStatus.Create(owner, repository, reference, newStatus); return rslt.Id.ToString(); } catch (Exception ex) { throw ex; } }
/// <summary> /// Creates a commit status for the specified ref. /// </summary> /// <remarks> /// https://developer.github.com/v3/repos/statuses/#create-a-status /// </remarks> /// <param name="repositoryId">The Id of the repository</param> /// <param name="reference">The reference (SHA, branch name, or tag name) to list commits for</param> /// <param name="newCommitStatus">The commit status to create</param> public Task <CommitStatus> Create(long repositoryId, string reference, NewCommitStatus newCommitStatus) { Ensure.ArgumentNotNullOrEmptyString(reference, "reference"); Ensure.ArgumentNotNull(newCommitStatus, "newCommitStatus"); return(ApiConnection.Post <CommitStatus>(ApiUrls.CreateCommitStatus(repositoryId, reference), newCommitStatus)); }
/// <summary> /// Creates a commit status for the specified ref. /// </summary> /// <param name="owner">The owner of the repository</param> /// <param name="name">The name of the repository</param> /// <param name="reference">The reference (SHA, branch name, or tag name) to list commits for.</param> /// <param name="commitStatus">The commit status to create.</param> /// <returns></returns> public Task<CommitStatus> Create(string owner, string name, string reference, NewCommitStatus commitStatus) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNullOrEmptyString(reference, "reference"); Ensure.ArgumentNotNull(commitStatus, "commitStatus"); return ApiConnection.Post<CommitStatus>(ApiUrls.CommitStatus(owner, name, reference), commitStatus); }
/// <summary> /// Creates a commit status for the specified ref. /// </summary> /// <param name="owner">The owner of the repository</param> /// <param name="name">The name of the repository</param> /// <param name="reference">The reference (SHA, branch name, or tag name) to list commits for</param> /// <param name="commitStatus">The commit status to create</param> /// <returns></returns> public Task<CommitStatus> Create(string owner, string name, string reference, NewCommitStatus commitStatus) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNullOrEmptyString(reference, "reference"); Ensure.ArgumentNotNull(commitStatus, "commitStatus"); // This is currently a preview feature of the API and is subject to change // https://developer.github.com/v3/repos/statuses/#list-statuses-for-a-specific-ref return ApiConnection.Post<CommitStatus>( ApiUrls.CommitStatus(owner, name, reference), commitStatus); }
public async Task CanAssignPendingToCommit() { var commit = await SetupCommitForRepository(_client); var status = new NewCommitStatus { State = CommitState.Pending, Description = "this is a test status" }; var result = await _client.Repository.CommitStatus.Create(_owner, _repository.Name, commit.Sha, status); Assert.Equal(CommitState.Pending, result.State); }
public async Task CanRetrievePendingStatus() { var commit = await SetupCommitForRepository(_client); var status = new NewCommitStatus { State = CommitState.Pending, Description = "this is a test status" }; await _client.Repository.CommitStatus.Create(_owner, _repository.Name, commit.Sha, status); var statuses = await _client.Repository.CommitStatus.GetAll(_owner, _repository.Name, commit.Sha); Assert.Equal(1, statuses.Count); Assert.Equal(CommitState.Pending, statuses[0].State); }
/// <summary> /// Setting GitHub Status using Octokit /// </summary> /// <returns> /// /// </returns> public async Task AssignPendingToCommit(JObject data) { var client = new GitHubClient(new ProductHeaderValue("CaptainHook")); var token = ConfigurationManager.AppSettings["github_token"]; if (token != null) { var tokenAuth = new Credentials(token); client.Credentials = tokenAuth; var status = new NewCommitStatus { State = CommitState.Pending, Description = "This is a test status" }; var repoOwner = data["repository"]["owner"]["login"].Value<string>(); var repoName = data["repository"]["name"].Value<string>(); var commitSha = data["pull_request"]["head"]["sha"].Value<string>(); var result = await client.Repository.CommitStatus.Create(repoOwner, repoName, commitSha, status); } }
public async Task CanCreateStatusesForDifferentContexts() { var commit = await SetupCommitForRepository(_client); var status = new NewCommitStatus { State = CommitState.Pending, Description = "this is a test status", Context = "System A" }; await _client.Repository.CommitStatus.Create(_owner, _repository.Name, commit.Sha, status); status.Context = "System B"; await _client.Repository.CommitStatus.Create(_owner, _repository.Name, commit.Sha, status); var statuses = await _client.Repository.CommitStatus.GetAll(_owner, _repository.Name, commit.Sha); Assert.Equal(2, statuses.Count); Assert.Equal("System B", statuses[0].Context); Assert.Equal("System A", statuses[1].Context); }
public async Task CanProvideACommitStatusWithoutRequiringAContext() { var commit = await SetupCommitForRepository(_client); var status = new NewCommitStatus { State = CommitState.Pending, Description = "this is a test status" }; await _client.Repository.CommitStatus.Create(_owner, _repository.Name, commit.Sha, status); var statuses = await _client.Repository.CommitStatus.GetAll(_owner, _repository.Name, commit.Sha); Assert.Equal(1, statuses.Count); Assert.Equal("default", statuses[0].Context); }
/// <summary> /// Creates a commit status for the specified ref. /// </summary> /// <remarks> /// https://developer.github.com/v3/repos/statuses/#create-a-status /// </remarks> /// <param name="owner">The owner of the repository</param> /// <param name="name">The name of the repository</param> /// <param name="reference">The reference (SHA, branch name, or tag name) to list commits for</param> /// <param name="newCommitStatus">The commit status to create</param> public Task <CommitStatus> Create(string owner, string name, string reference, NewCommitStatus newCommitStatus) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNullOrEmptyString(reference, "reference"); Ensure.ArgumentNotNull(newCommitStatus, "newCommitStatus"); return(ApiConnection.Post <CommitStatus>(ApiUrls.CreateCommitStatus(owner, name, reference), newCommitStatus)); }
/// <summary> /// Creates a commit status for the specified ref. /// </summary> /// <param name="owner">The owner of the repository</param> /// <param name="name">The name of the repository</param> /// <param name="reference">The reference (SHA, branch name, or tag name) to list commits for</param> /// <param name="commitStatus">The commit status to create</param> /// <returns></returns> public Task <CommitStatus> Create(string owner, string name, string reference, NewCommitStatus commitStatus) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNullOrEmptyString(reference, "reference"); Ensure.ArgumentNotNull(commitStatus, "commitStatus"); // This is currently a preview feature of the API and is subject to change // https://developer.github.com/v3/repos/statuses/#list-statuses-for-a-specific-ref return(ApiConnection.Post <CommitStatus>( ApiUrls.CommitStatus(owner, name, reference), commitStatus, "application/vnd.github.she-hulk-preview+json")); }
public async Task CanUpdatePendingStatusToSuccess() { var commit = await SetupCommitForRepository(_github); var status = new NewCommitStatus { State = CommitState.Pending, Description = "this is a test status" }; await _github.Repository.CommitStatus.Create(_context.RepositoryOwner, _context.RepositoryName, commit.Sha, status); status.State = CommitState.Success; await _github.Repository.CommitStatus.Create(_context.RepositoryOwner, _context.RepositoryName, commit.Sha, status); var statuses = await _github.Repository.CommitStatus.GetAll(_context.RepositoryOwner, _context.RepositoryName, commit.Sha); Assert.Equal(2, statuses.Count); Assert.Equal(CommitState.Success, statuses[0].State); }
private async Task SendStatusAsync(Payload payload, ReviewStatus status) { var owner = payload.repository.owner.login; var repo = payload.repository.name; var repository = await Client.Repository.Get(owner, repo); var issueNumber = payload.issue.number; var commits = await Client.Repository.PullRequest.Commits(owner, repo, issueNumber); var lastCommit = commits.Last(); var commitStatus = new NewCommitStatus { Context = "code-review/treshold", State = status.Status, Description = status.Comment, }; await Client.Repository.CommitStatus.Create(owner, repo, lastCommit.Sha, commitStatus); }
/// <summary> /// Creates a commit status for the specified ref. /// </summary> /// <remarks> /// https://developer.github.com/v3/repos/statuses/#create-a-status /// </remarks> /// <param name="repositoryId">The Id of the repository</param> /// <param name="reference">The reference (SHA, branch name, or tag name) to list commits for</param> /// <param name="newCommitStatus">The commit status to create</param> public Task<CommitStatus> Create(long repositoryId, string reference, NewCommitStatus newCommitStatus) { Ensure.ArgumentNotNullOrEmptyString(reference, "reference"); Ensure.ArgumentNotNull(newCommitStatus, "newCommitStatus"); return ApiConnection.Post<CommitStatus>(ApiUrls.CreateCommitStatus(repositoryId, reference), newCommitStatus); }