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;
            }
        }
Ejemplo n.º 2
0
        /// <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));
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        /// <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);
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        /// <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));
        }
Ejemplo n.º 11
0
        /// <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);
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        /// <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);
        }