Esempio n. 1
0
        private void Refresh(object sender, ElapsedEventArgs ea)
        {
            var json   = httpSender.SendGet(ApiUrl);
            var events = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Event> >(json)
                         .Where(e => (e.type == "IssuesEvent" || e.type == "PullRequestEvent") && e.created_at.Ticks > lastReceivedTime)
                         .ToList();

            foreach (var item in events.OrderBy(e => e.created_at))
            {
                lastReceivedTime = item.created_at.Ticks;
                if (item.type == "IssuesEvent")
                {
                    IssuesEvent.Invoke(item);
                }
                if (item.type == "PullRequestEvent")
                {
                    PullRequestEvent.Invoke(item);
                }
            }
        }
Esempio n. 2
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");
            }
        }
Esempio n. 3
0
        private static MattermostMessage GetMessageIssues(IssuesEvent payload)
        {
            var retVal = BaseMessageForRepo(payload.repository.full_name);

            MattermostAttachment att = null;

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

            switch (payload.action)
            {
            case "opened":
                retVal.Text = $"{userMd} opened a [new issue]({payload.issue.html_url}) in {repoMd}";
                if (!string.IsNullOrEmpty(payload.issue.body))
                {
                    att = new MattermostAttachment
                    {
                        Title     = $"#{payload.issue.number} {payload.issue.title}",
                        TitleLink = new Uri(payload.issue.html_url),
                        Text      = payload.issue.body
                    }
                }
                ;
                break;

            case "closed":
                retVal.Text = $"{userMd} closed issue {titleMd} in {repoMd}";
                break;

            case "reopened":
                retVal.Text = $"{userMd} reopened issue {titleMd} in {repoMd}";
                break;

            case "labeled":
                retVal.Text = $"{userMd} added label: `{payload.label.name}` to {titleMd} in {repoMd}";
                break;

            case "unlabeled":
                retVal.Text = $"{userMd} removed label: `{payload.label.name}` from {titleMd} in {repoMd}";
                break;

            case "assigned":
                var asignMd = $"[{payload.assignee.login}]({payload.assignee.html_url})";
                retVal.Text = $"{userMd} assigned {asignMd} to {titleMd} in {repoMd}";
                break;

            case "unassigned":
                var unasignMd = $"[{payload.assignee.login}]({payload.assignee.html_url})";
                retVal.Text = $"{userMd} unassigned {unasignMd} from {titleMd} in {repoMd}";
                break;

            default:
                throw new NotImplementedException($"Unhandled Event action: {payload.action}");
            }
            if (att != null)
            {
                retVal.Attachments = new List <MattermostAttachment>
                {
                    att
                }
            }
            ;

            return(retVal);
        }