diff options
author | 2012-03-03 11:07:31 +0100 | |
---|---|---|
committer | 2012-03-03 11:07:31 +0100 | |
commit | 221aae624d8a32e801268d2ea5866e885bd3b042 (patch) | |
tree | 788fdb1cf95199bf9d6e7ee3429b3bcf73251942 /pygithub3/services | |
parent | Add Manifest (diff) | |
download | python-github3-221aae624d8a32e801268d2ea5866e885bd3b042.tar.xz python-github3-221aae624d8a32e801268d2ea5866e885bd3b042.zip |
Service repos done
+repos.hooks
Diffstat (limited to 'pygithub3/services')
-rw-r--r-- | pygithub3/services/base.py | 3 | ||||
-rw-r--r-- | pygithub3/services/repos/__init__.py | 2 | ||||
-rw-r--r-- | pygithub3/services/repos/commits.py | 2 | ||||
-rw-r--r-- | pygithub3/services/repos/hooks.py | 116 |
4 files changed, 122 insertions, 1 deletions
diff --git a/pygithub3/services/base.py b/pygithub3/services/base.py index 9f7279a..84379b0 100644 --- a/pygithub3/services/base.py +++ b/pygithub3/services/base.py @@ -83,6 +83,9 @@ class Service(object): kwargs['repo'] = kwargs['repo'] or self.get_repo() return self.request_builder(request, **kwargs) + def _request(self, verb, request, **kwargs): + self._client.request(verb, request, **kwargs) + def _bool(self, request, **kwargs): try: self._client.head(request, **kwargs) diff --git a/pygithub3/services/repos/__init__.py b/pygithub3/services/repos/__init__.py index 6695265..df029e8 100644 --- a/pygithub3/services/repos/__init__.py +++ b/pygithub3/services/repos/__init__.py @@ -8,6 +8,7 @@ from .downloads import Downloads from .forks import Forks from .keys import Keys from .watchers import Watchers +from .hooks import Hooks class Repos(Service): @@ -20,6 +21,7 @@ class Repos(Service): self.forks = Forks(**config) self.keys = Keys(**config) self.watchers = Watchers(**config) + self.hooks = Hooks(**config) super(Repos, self).__init__(**config) def list(self, user=None, type='all'): diff --git a/pygithub3/services/repos/commits.py b/pygithub3/services/repos/commits.py index 8eec3e7..fd29fc0 100644 --- a/pygithub3/services/repos/commits.py +++ b/pygithub3/services/repos/commits.py @@ -9,7 +9,7 @@ class Commits(Service, MimeTypeMixin): <http://developer.github.com/v3/repos/commits>`_ .. note:: - This service support :ref:`mimetypes` configuration + This service support :ref:`mimetypes-section` configuration """ #TODO: Pagination structure differs from usual diff --git a/pygithub3/services/repos/hooks.py b/pygithub3/services/repos/hooks.py new file mode 100644 index 0000000..59cf6e1 --- /dev/null +++ b/pygithub3/services/repos/hooks.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from . import Service + + +class Hooks(Service): + """ Consume `Hooks API + <http://developer.github.com/v3/repos/hooks>`_ + + .. warning:: + You must be authenticated and have repository's admin-permission + """ + + def list(self, user=None, repo=None): + """ Get repository's hooks + + :param str user: Username + :param str repo: Repository + :returns: A :doc:`result` + + .. note:: + Remember :ref:`config precedence` + """ + request = self.make_request('repos.hooks.list', user=user, repo=repo) + return self._get_result(request) + + def get(self, hook_id, user=None, repo=None): + """ Get a single hook + + :param int hook_id: Hook id + :param str user: Username + :param str repo: Repository + + .. note:: + Remember :ref:`config precedence` + """ + request = self.make_request('repos.hooks.get', + id=hook_id, user=user, repo=repo) + return self._get(request) + + def create(self, data, user=None, repo=None): + """ Create a hook + + :param dict data: Input. See `github hooks doc`_ + :param str user: Username + :param str repo: Repository + + .. note:: + Remember :ref:`config precedence` + + :: + + data = { + "name": "acunote", + "active": True, + "config": { + 'token': 'AAA...', + }, + "events": ['push', 'issues'], + } + hooks_service.create(data, user='octocat', repo='oct_repo') + """ + request = self.make_request('repos.hooks.create', + user=user, repo=repo, body=data) + return self._post(request) + + def update(self, hook_id, data, user=None, repo=None): + """ Update a single hook + + :param int hook_id: Hook id + :param dict data: Input. See `github hooks doc`_ + :param str user: Username + :param str repo: Repository + + .. note:: + Remember :ref:`config precedence` + + :: + + hooks_service.update(42, dict(active=False), user='octocat', + repo='oct_repo') + """ + request = self.make_request('repos.hooks.update', + id=hook_id, user=user, repo=repo, body=data) + return self._patch(request) + + def test(self, hook_id, user=None, repo=None): + """ Test a hook + + :param str user: Username + :param str repo: Repository + + .. note:: + Remember :ref:`config precedence` + + This will trigger the hook with the latest push to the current + repository. + """ + request = self.make_request('repos.hooks.test', + id=hook_id, user=user, repo=repo) + self._request('post', request) + + def delete(self, hook_id, user=None, repo=None): + """ Delete a single hook + + :param int hook_id: Hook id + :param str user: Username + :param str repo: Repository + + .. note:: + Remember :ref:`config precedence` + """ + request = self.make_request('repos.hooks.delete', + id=hook_id, user=user, repo=repo) + self._delete(request) |