public IObservable<PullRequestReview> PostPullRequestReview(
            string owner,
            string name,
            int number,
            string commitId,
            string body,
            PullRequestReviewEvent e)
        {
            Guard.ArgumentNotEmptyString(owner, nameof(owner));
            Guard.ArgumentNotEmptyString(name, nameof(name));

            var review = new PullRequestReviewCreate
            {
                Body = body,
                CommitId = commitId,
                Event = e,
            };

            return gitHubClient.PullRequest.Review.Create(owner, name, number, review);
        }
        public void PullRequestReviewCreateEnsuresArgumentsValue()
        {
            string body = "body";
            string path = "path";
            PullRequestReviewEvent evt = PullRequestReviewEvent.Approve;
            int position = 1;

            var comment = new DraftPullRequestReviewComment(body, path, position);

            var review = new PullRequestReviewCreate()
            {
                Body  = body,
                Event = evt
            };

            review.Comments.Add(comment);


            Assert.Equal(body, review.Body);
            Assert.Equal(evt, review.Event);
            Assert.NotEmpty(review.Comments);
        }
Beispiel #3
0
        private object ConvertPayload()
        {
            switch (Event)
            {
            case PingEvent.EventString:
                return(PingEvent.FromJson(PayloadText));

            case CommitCommentEvent.EventString:
                return(CommitCommentEvent.FromJson(PayloadText));

            case CreateEvent.EventString:
                return(CreateEvent.FromJson(PayloadText));

            case DeleteEvent.EventString:
                return(DeleteEvent.FromJson(PayloadText));

            case DeploymentEvent.EventString:
                return(DeploymentEvent.FromJson(PayloadText));

            case DeploymentStatusEvent.EventString:
                return(DeploymentStatusEvent.FromJson(PayloadText));

            case ForkEvent.EventString:
                return(ForkEvent.FromJson(PayloadText));

            case GollumEvent.EventString:
                return(GollumEvent.FromJson(PayloadText));

            case InstallationEvent.EventString:
                return(InstallationEvent.FromJson(PayloadText));

            case InstallationRepositoriesEvent.EventString:
                return(InstallationRepositoriesEvent.FromJson(PayloadText));

            case IssueCommentEvent.EventString:
                return(IssueCommentEvent.FromJson(PayloadText));

            case IssuesEvent.EventString:
                return(IssuesEvent.FromJson(PayloadText));

            case LabelEvent.EventString:
                return(LabelEvent.FromJson(PayloadText));

            case MemberEvent.EventString:
                return(MemberEvent.FromJson(PayloadText));

            case MembershipEvent.EventString:
                return(MembershipEvent.FromJson(PayloadText));

            case MilestoneEvent.EventString:
                return(MilestoneEvent.FromJson(PayloadText));

            case OrganizationEvent.EventString:
                return(OrganizationEvent.FromJson(PayloadText));

            case OrgBlockEvent.EventString:
                return(OrgBlockEvent.FromJson(PayloadText));

            case PageBuildEvent.EventString:
                return(PageBuildEvent.FromJson(PayloadText));

            case ProjectCardEvent.EventString:
                return(ProjectCardEvent.FromJson(PayloadText));

            case ProjectColumnEvent.EventString:
                return(ProjectColumnEvent.FromJson(PayloadText));

            case ProjectEvent.EventString:
                return(ProjectEvent.FromJson(PayloadText));

            case PublicEvent.EventString:
                return(PublicEvent.FromJson(PayloadText));

            case PullRequestEvent.EventString:
                return(PullRequestEvent.FromJson(PayloadText));

            case PullRequestReviewEvent.EventString:
                return(PullRequestReviewEvent.FromJson(PayloadText));

            case PullRequestReviewCommentEvent.EventString:
                return(PullRequestReviewCommentEvent.FromJson(PayloadText));

            case PushEvent.EventString:
                return(PushEvent.FromJson(PayloadText));

            case ReleaseEvent.EventString:
                return(ReleaseEvent.FromJson(PayloadText));

            case RepositoryEvent.EventString:
                return(RepositoryEvent.FromJson(PayloadText));

            case StatusEvent.EventString:
                return(StatusEvent.FromJson(PayloadText));

            case WatchEvent.EventString:
                return(WatchEvent.FromJson(PayloadText));

            default:
                throw new NotImplementedException(
                          $"Event Type: `{Event}` is not implemented. Want it added? Open an issue at https://github.com/promofaux/GithubWebhooks");
            }
        }
Beispiel #4
0
        private static MattermostMessage GetMessagePullRequestReview(PullRequestReviewEvent payload)
        {
            var retVal = BaseMessageForRepo(payload.repository.full_name);
            MattermostAttachment att = null;

            var repoMd  = $"[{payload.repository.full_name}]({payload.repository.html_url})";
            var titleMd =
                $"[#{payload.pull_request.number} {payload.pull_request.title}]({payload.pull_request.html_url})";
            var userMd     = $"[{payload.sender.login}]({payload.sender.html_url})";
            var reviewerMd = $"[{payload.review.user.login}]({payload.review.user.html_url})";

            switch (payload.action)
            {
            case "submitted":
                switch (payload.review.state)
                {
                //case "commented":
                //retVal.Text = $"{userMd} created a [review]({payload.review.html_url}) on {titleMd} in {repoMd}";
                //break;
                case "approved":
                    retVal.Text = $"{userMd} [approved]({payload.review.html_url}) {titleMd} in {repoMd}";
                    break;

                case "changes_requested":
                    retVal.Text =
                        $"{userMd} [requested changes]({payload.review.html_url}) on {titleMd} in {repoMd}";
                    break;

                default:
                    retVal.Text =
                        $"{userMd} submitted a [review]({payload.review.html_url}) on {titleMd} in {repoMd}";
                    break;
                }

                if (!string.IsNullOrEmpty(payload.review.body))
                {
                    att = new MattermostAttachment
                    {
                        Text = payload.review.body
                    }
                }
                ;
                break;

            case "dismissed":
                retVal.Text =
                    $"A [review]({payload.review.html_url}) by {reviewerMd} was dismissed on {titleMd} in {repoMd}";
                break;

            default:
                throw new NotImplementedException($"Unhandled Event action: {payload.action}");
            }

            if (att != null)
            {
                retVal.Attachments = new List <MattermostAttachment>
                {
                    att
                }
            }
            ;

            return(retVal);
        }