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