aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/services
diff options
context:
space:
mode:
authorDavid Medina <davidmedina9@gmail.com>2012-05-27 21:39:03 +0200
committerDavid Medina <davidmedina9@gmail.com>2012-05-27 21:39:31 +0200
commitac2b75a6527e8ce916b7675dac247d37276a3aa2 (patch)
tree4a3ead072bcdee6f17fdac88e836f30ad435fd7f /pygithub3/services
parentMerge pull request #11 from dsc/patch-1 (diff)
parentAuthors updated (diff)
downloadpython-github3-ac2b75a6527e8ce916b7675dac247d37276a3aa2.tar.xz
python-github3-ac2b75a6527e8ce916b7675dac247d37276a3aa2.zip
Merge 'services/orgs'
Diffstat (limited to 'pygithub3/services')
-rw-r--r--pygithub3/services/base.py10
-rw-r--r--pygithub3/services/orgs/__init__.py58
-rw-r--r--pygithub3/services/orgs/members.py92
-rw-r--r--pygithub3/services/orgs/teams.py136
4 files changed, 291 insertions, 5 deletions
diff --git a/pygithub3/services/base.py b/pygithub3/services/base.py
index 1059371..649b2b3 100644
--- a/pygithub3/services/base.py
+++ b/pygithub3/services/base.py
@@ -111,10 +111,10 @@ class Service(object):
def _put(self, request, **kwargs):
""" Bug in Github API? requests library?
- I must send data as empty string when the specifications' of some PUT
- request are 'Not send input data'. If I don't do that and send data as
- None, the requests library doesn't send 'Content-length' header and the
- server returns 411 - Required Content length (at least 0)
+ I must send data when the specifications' of some PUT request are 'Not
+ send input data'. If I don't do that and send data as None, the
+ requests library doesn't send 'Content-length' header and the server
+ returns 411 - Required Content length (at least 0)
For instance:
- follow-user request doesn't send input data
@@ -125,7 +125,7 @@ class Service(object):
Related: https://github.com/github/developer.github.com/pull/52
"""
- input_data = request.get_body() or ''
+ input_data = request.get_body() or 'PLACEHOLDER'
response = self._client.put(request, data=input_data, **kwargs)
if response.status_code != 204: # != NO_CONTENT
return request.resource.loads(response.content)
diff --git a/pygithub3/services/orgs/__init__.py b/pygithub3/services/orgs/__init__.py
new file mode 100644
index 0000000..8499719
--- /dev/null
+++ b/pygithub3/services/orgs/__init__.py
@@ -0,0 +1,58 @@
+# -*- encoding: utf-8 -*-
+
+from pygithub3.services.base import Service
+from .members import Members
+from .teams import Teams
+
+
+class Org(Service):
+ """ Consume `Orgs API <http://developer.github.com/v3/orgs>`_ """
+
+ def __init__(self, **config):
+ self.members = Members(**config)
+ self.teams = Teams(**config)
+ super(Org, self).__init__(**config)
+
+ def list(self, user=None):
+ """ Get user's orgs
+
+ :param str user: Username
+ :returns: A :doc:`result`
+
+ If you call it without user and you are authenticated, get the
+ authenticated user's orgs, public and private.
+
+ If you call it with a user, get the user's public orgs.
+
+ ::
+
+ org_service.list('copitux')
+ org_service.list()
+ """
+ request = self.request_builder('orgs.list', user=user)
+ return self._get_result(request)
+
+ def get(self, org):
+ """ Get a single org
+
+ :param str org: Org name
+ """
+ request = self.request_builder('orgs.get', org=org)
+ return self._get(request)
+
+ def update(self, org, data):
+ """ Update a single org
+
+ :param str org: Org name
+ :param dict data: Input. See `github orgs doc`_
+
+ .. warning ::
+ You must be authenticated
+
+ ::
+
+ org_service.update(dict(company='ACME Development',
+ location='Timbuctoo'))
+ """
+ request = self.request_builder('orgs.update', org=org, body=data)
+ return self._patch(request)
diff --git a/pygithub3/services/orgs/members.py b/pygithub3/services/orgs/members.py
new file mode 100644
index 0000000..fb0da03
--- /dev/null
+++ b/pygithub3/services/orgs/members.py
@@ -0,0 +1,92 @@
+# -*- encoding: utf-8 -*-
+
+from . import Service
+
+
+class Members(Service):
+ """ Consume `Members API <http://developer.github.com/v3/orgs/members/>`_
+ """
+
+ def list(self, org):
+ """ Get org's members
+
+ :param str org: Organisation name
+ :returns: A :doc:`result`
+
+ If you call it authenticated, and are a member of the org, public and
+ private members will be visible.
+
+ If not, only public members will be visible.
+ """
+ request = self.request_builder('orgs.members.list', org=org)
+ return self._get_result(request)
+
+ def is_member(self, org, user):
+ """ Determine if user is a member of org
+
+ :param str org: Organisation name
+ :param str user: User name
+ """
+ request = self.request_builder('orgs.members.is_member', org=org,
+ user=user)
+ return self._bool(request)
+
+ def remove_member(self, org, user):
+ """ Remove user from all teams in org
+
+ :param str org: Organisation name
+ :param str user: User name
+
+ .. warning ::
+ You must be authenticated and an owner of org
+
+ """
+ request = self.request_builder('orgs.members.delete', org=org, user=user)
+ return self._delete(request)
+
+ def list_public(self, org):
+ """ Get org's public members
+
+ :param str org: Organisation name
+ :returns: A :doc:`result`
+ """
+ request = self.request_builder('orgs.members.listpublic', org=org)
+ return self._get_result(request)
+
+ def is_public_member(self, org, user):
+ """ Determine if user is a public member of org
+
+ :param str org: Organisation name
+ :param str user: User name
+ """
+ request = self.request_builder('orgs.members.is_public_member',
+ org=org, user=user)
+ return self._bool(request)
+
+ def publicize_membership(self, org, user):
+ """ Publicize user's membership in org
+
+ :param str org: Organisation name
+ :param str user: User name
+
+ .. warning ::
+ You must be authenticated and the user, or an owner of the org
+
+ """
+ request = self.request_builder('orgs.members.publicize',
+ org=org, user=user)
+ return self._put(request)
+
+ def conceal_membership(self, org, user):
+ """ Conceal user's membership in org
+
+ :param str org: Organisation name
+ :param str user: User name
+
+ .. warning ::
+ You must be authenticated and the user, or an owner of the org
+
+ """
+ request = self.request_builder('orgs.members.conceal',
+ org=org, user=user)
+ return self._delete(request)
diff --git a/pygithub3/services/orgs/teams.py b/pygithub3/services/orgs/teams.py
new file mode 100644
index 0000000..84aa855
--- /dev/null
+++ b/pygithub3/services/orgs/teams.py
@@ -0,0 +1,136 @@
+# -*- encoding: utf-8 -*-
+
+from . import Service
+
+
+class Teams(Service):
+ """ Consume `Teams API <http://developer.github.com/v3/orgs/teams/>`_
+
+ .. warning ::
+ You must be authenticated as an owner of the org
+ """
+
+ def list(self, org):
+ """ Get org's teams
+
+ :param str org: Organisation name
+ :returns: A :doc:`result`
+ """
+ request = self.request_builder('orgs.teams.list', org=org)
+ return self._get_result(request)
+
+ def get(self, id):
+ """ Get a team
+
+ :param int id: The team id
+ :returns: A :doc:`result`
+ """
+ request = self.request_builder('orgs.teams.get', id=id)
+ return self._get(request)
+
+ def create(self, org, data):
+ """ Create a new team
+
+ :param str org: Organisation name
+ :param dict data: Input. See `github orgs teams doc`_
+ """
+ request = self.request_builder('orgs.teams.create', org=org, body=data)
+ return self._post(request)
+
+ def update(self, id, data):
+ """ Update a team
+
+ :param int id: The team id
+ :param dict data: Input. See `github orgs teams doc`_
+ """
+ request = self.request_builder('orgs.teams.update', id=id, body=data)
+ return self._patch(request)
+
+ def delete(self, id):
+ """ Delete a team
+
+ :param int id: The team id
+ """
+ request = self.request_builder('orgs.teams.delete', id=id)
+ return self._delete(request)
+
+ def list_members(self, id):
+ """ List the members of a team
+
+ :param int id: The team id
+ :returns: A :doc:`result`
+ """
+ request = self.request_builder('orgs.teams.list_members', id=id)
+ return self._get_result(request)
+
+ def is_member(self, id, user):
+ """ Determine if user is a member of a team
+
+ :param int id: The team id
+ :param str user: User name
+ """
+ request = self.request_builder('orgs.teams.is_member',
+ id=id, user=user)
+ return self._bool(request)
+
+ def add_member(self, id, user):
+ """ Add a user to a team
+
+ :param int id: The team id
+ :param str user: User name
+ """
+ request = self.request_builder('orgs.teams.add_member',
+ id=id, user=user)
+ return self._put(request)
+
+ def remove_member(self, id, user):
+ """ Remove a member from a team
+
+ :param int id: The team id
+ :param str user: User name
+ """
+ request = self.request_builder('orgs.teams.remove_member',
+ id=id, user=user)
+ return self._delete(request)
+
+ def list_repos(self, id):
+ """ List the repos that a team's members get access to
+
+ :param int id: The team id
+ :returns: A :doc:`result`
+ """
+ request = self.request_builder('orgs.teams.list_repos', id=id)
+ return self._get_result(request)
+
+ def contains_repo(self, id, user, repo):
+ """ Determine if user is a member of a team
+
+ :param int id: The team id
+ :param str user: User name
+ :param str repo: Repo name
+ """
+ request = self.request_builder('orgs.teams.contains_repo',
+ id=id, user=user, repo=repo)
+ return self._bool(request)
+
+ def add_repo(self, id, user, repo):
+ """ Give team members access to a repo
+
+ :param int id: The team id
+ :param str user: User name
+ :param str repo: Repo name
+ """
+ request = self.request_builder('orgs.teams.add_repo',
+ id=id, user=user, repo=repo)
+ return self._put(request)
+
+ def remove_repo(self, id, user, repo):
+ """ Remove a repo from the a team
+
+ :param int id: The team id
+ :param str user: User name
+ :param str repo: Repo name
+ """
+ request = self.request_builder('orgs.teams.remove_repo',
+ id=id, user=user, repo=repo)
+ return self._delete(request)