from datetime import datetime from dataclasses import dataclass from typing import Optional, Dict from platypush.message.event import Event @dataclass class Actor: id: str login: str display_login: str url: str gravatar_id: str avatar_url: str @dataclass class Repo: id: str name: str url: str class GithubEvent(Event): """ Generic Github event """ def __init__(self, event_type: str, created_at: datetime, actor: Optional[Dict[str, str]] = None, repo: Optional[Dict[str, str]] = None, *args, **kwargs): super().__init__(*args, actor=actor, event_type=event_type, repo=repo, created_at=created_at, **kwargs) self.event_type = event_type self.actor = Actor(**actor) if actor else None self.repo = Repo(**repo) if repo else None self.created_at = created_at class GithubPushEvent(GithubEvent): """ Github push event. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubCommitCommentEvent(GithubEvent): """ A commit comment is created. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubCreateEvent(GithubEvent): """ A git branch or tag is created. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubDeleteEvent(GithubEvent): """ A git branch or tag is deleted. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubForkEvent(GithubEvent): """ A user forks a watched repository. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubWikiEvent(GithubEvent): """ A wiki page is created or updated on a watched repository. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubIssueCommentEvent(GithubEvent): """ A comment is added or updated on an issue. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubIssueEvent(GithubEvent): """ A new activity is registered on an issue. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubMemberEvent(GithubEvent): """ New activity related to repository collaborators. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubPublicEvent(GithubEvent): """ A private repository is made public. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubPullRequestEvent(GithubEvent): """ New activity related to a pull request. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubPullRequestReviewCommentEvent(GithubEvent): """ New activity related to comments of a pull request. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubReleaseEvent(GithubEvent): """ New activity related to the release of a repository. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubSponsorshipEvent(GithubEvent): """ New activity related to the sponsorship of a repository. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) class GithubWatchEvent(GithubEvent): """ Event triggered when someone stars or starts watching a repository. """ def __init__(self, payload: dict, *args, **kwargs): super().__init__(*args, payload=payload, **kwargs) # vim:sw=4:ts=4:et: