mirror of
https://github.com/kennethreitz/python-github3.git
synced 2026-06-05 23:10:17 +00:00
awake too late
This commit is contained in:
+14
-12
@@ -7,6 +7,11 @@ github3.api
|
|||||||
This module provies the core GitHub3 API interface.
|
This module provies the core GitHub3 API interface.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from urlparse import urlparse, parse_qs
|
||||||
|
|
||||||
|
import requests
|
||||||
|
from decorator import decorator
|
||||||
|
|
||||||
from .packages import omnijson as json
|
from .packages import omnijson as json
|
||||||
from .packages.link_header import parse_link_value
|
from .packages.link_header import parse_link_value
|
||||||
|
|
||||||
@@ -15,9 +20,7 @@ from .helpers import is_collection, to_python, to_api, get_scope
|
|||||||
from .config import settings
|
from .config import settings
|
||||||
|
|
||||||
|
|
||||||
import requests
|
|
||||||
|
|
||||||
from decorator import decorator
|
|
||||||
|
|
||||||
PAGING_SIZE = 100
|
PAGING_SIZE = 100
|
||||||
|
|
||||||
@@ -69,7 +72,7 @@ class GithubCore(object):
|
|||||||
return r
|
return r
|
||||||
|
|
||||||
|
|
||||||
def _http_resource(self, verb, endpoint, params=None, **etc):
|
def _http_resource(self, verb, endpoint, params=None, check_status=True, **etc):
|
||||||
|
|
||||||
url = self._generate_url(endpoint)
|
url = self._generate_url(endpoint)
|
||||||
args = (verb, url)
|
args = (verb, url)
|
||||||
@@ -83,7 +86,8 @@ class GithubCore(object):
|
|||||||
r = self.session.request(*args, **kwargs)
|
r = self.session.request(*args, **kwargs)
|
||||||
r = self._requests_post_hook(r)
|
r = self._requests_post_hook(r)
|
||||||
|
|
||||||
r.raise_for_status()
|
if check_status:
|
||||||
|
r.raise_for_status()
|
||||||
|
|
||||||
return r
|
return r
|
||||||
|
|
||||||
@@ -104,7 +108,10 @@ class GithubCore(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _total_pages_from_header(link_header):
|
def _total_pages_from_header(link_header):
|
||||||
from urlparse import urlparse, parse_qs
|
|
||||||
|
if link_header is None:
|
||||||
|
return link_header
|
||||||
|
|
||||||
page_info = {}
|
page_info = {}
|
||||||
|
|
||||||
for link in link_header.split(','):
|
for link in link_header.split(','):
|
||||||
@@ -147,11 +154,10 @@ class GithubCore(object):
|
|||||||
kwargs['per_page'] = (limit - r_count)
|
kwargs['per_page'] = (limit - r_count)
|
||||||
moar = False
|
moar = False
|
||||||
|
|
||||||
|
|
||||||
r = self._http_resource('GET', resource, params=kwargs)
|
r = self._http_resource('GET', resource, params=kwargs)
|
||||||
max_page = self._total_pages_from_header(r.headers['link'])
|
max_page = self._total_pages_from_header(r.headers['link'])
|
||||||
|
|
||||||
if max_page is True:
|
if (max_page is True) or (max_page is None):
|
||||||
moar = False
|
moar = False
|
||||||
|
|
||||||
d_items = self._resource_deserialize(r.content)
|
d_items = self._resource_deserialize(r.content)
|
||||||
@@ -203,12 +209,8 @@ class Github(GithubCore):
|
|||||||
"""Get the authenticated user."""
|
"""Get the authenticated user."""
|
||||||
return self._get_resource(('user'), CurrentUser)
|
return self._get_resource(('user'), CurrentUser)
|
||||||
|
|
||||||
# def get_repos(self, username):
|
|
||||||
# """Get repos."""
|
|
||||||
# return self._get_resource(('user', 'username', 'repos'), Repo)
|
|
||||||
|
|
||||||
def get_repo(self, username, reponame):
|
def get_repo(self, username, reponame):
|
||||||
"""Get the authenticated user."""
|
"""Get the given repo."""
|
||||||
return self._get_resource(('repos', username, reponame), Repo)
|
return self._get_resource(('repos', username, reponame), Repo)
|
||||||
|
|
||||||
def get_org(self, login):
|
def get_org(self, login):
|
||||||
|
|||||||
+62
-4
@@ -104,10 +104,14 @@ class User(BaseResource):
|
|||||||
def repos(self, limit=None):
|
def repos(self, limit=None):
|
||||||
return self._gh._get_resources(('users', self.login, 'repos'), Repo, limit=limit)
|
return self._gh._get_resources(('users', self.login, 'repos'), Repo, limit=limit)
|
||||||
|
|
||||||
|
def repo(self, reponame):
|
||||||
|
return self._gh._get_resource(('repos', self.login, reponame), Repo)
|
||||||
|
|
||||||
def orgs(self):
|
def orgs(self):
|
||||||
return self._gh._get_resources(('users', self.login, 'orgs'), Org)
|
return self._gh._get_resources(('users', self.login, 'orgs'), Org)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CurrentUser(User):
|
class CurrentUser(User):
|
||||||
"""Github Current User object model."""
|
"""Github Current User object model."""
|
||||||
|
|
||||||
@@ -128,8 +132,15 @@ class CurrentUser(User):
|
|||||||
def repos(self, limit=None):
|
def repos(self, limit=None):
|
||||||
return self._gh._get_resources(('user', 'repos'), Repo, limit=limit)
|
return self._gh._get_resources(('user', 'repos'), Repo, limit=limit)
|
||||||
|
|
||||||
def orgs(self):
|
def repo(self, reponame):
|
||||||
return self._gh._get_resources(('user', 'orgs'), Org)
|
return self._gh._get_resource(('repos', self.login, reponame), Repo)
|
||||||
|
|
||||||
|
def orgs(self, limit=None):
|
||||||
|
return self._gh._get_resources(('user', 'orgs'), Org, limit=limit)
|
||||||
|
|
||||||
|
def org(self, orgname):
|
||||||
|
return self._gh._get_resource(('orgs', orgname), Org)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Org(BaseResource):
|
class Org(BaseResource):
|
||||||
@@ -137,7 +148,7 @@ class Org(BaseResource):
|
|||||||
|
|
||||||
_strs = [
|
_strs = [
|
||||||
'login', 'url', 'avatar_url', 'name', 'company', 'blog', 'location', 'email'
|
'login', 'url', 'avatar_url', 'name', 'company', 'blog', 'location', 'email'
|
||||||
'html_url', 'type']
|
'html_url', 'type', 'billing_email']
|
||||||
_ints = [
|
_ints = [
|
||||||
'id', 'public_repos', 'public_gists', 'followers', 'following',
|
'id', 'public_repos', 'public_gists', 'followers', 'following',
|
||||||
'total_private_repos', 'owned_private_repos', 'private_gists', 'disk_usage',
|
'total_private_repos', 'owned_private_repos', 'private_gists', 'disk_usage',
|
||||||
@@ -146,11 +157,58 @@ class Org(BaseResource):
|
|||||||
_map = {'plan': Plan}
|
_map = {'plan': Plan}
|
||||||
_writable = ['billing_email', 'blog', 'company', 'email', 'location', 'name']
|
_writable = ['billing_email', 'blog', 'company', 'email', 'location', 'name']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def ri(self):
|
||||||
|
return ('orgs', self.login)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<org {0}>'.format(self.login)
|
return '<org {0}>'.format(self.login)
|
||||||
|
|
||||||
def repos(self, limit=None):
|
def repos(self, limit=None):
|
||||||
return self._gh._get_resources(('orgs', self.login, 'repos'), Repo)
|
return self._gh._get_resources(('orgs', self.login, 'repos'), Repo, limit=limit)
|
||||||
|
|
||||||
|
def members(self, limit=None):
|
||||||
|
return self._gh._get_resources(('orgs', self.login, 'members'), User, limit=limit)
|
||||||
|
|
||||||
|
def is_member(self, username):
|
||||||
|
if isinstance(username, User):
|
||||||
|
username = username.login
|
||||||
|
|
||||||
|
r = self._gh._http_resource('GET', ('orgs', self.login, 'members', username), check_status=False)
|
||||||
|
return (r.status_code == 204)
|
||||||
|
|
||||||
|
def publicize_member(self, username):
|
||||||
|
if isinstance(username, User):
|
||||||
|
username = username.login
|
||||||
|
|
||||||
|
r = self._gh._http_resource('PUT', ('orgs', self.login, 'public_members', username), check_status=False, data='')
|
||||||
|
return (r.status_code == 204)
|
||||||
|
|
||||||
|
def conceal_member(self, username):
|
||||||
|
if isinstance(username, User):
|
||||||
|
username = username.login
|
||||||
|
|
||||||
|
r = self._gh._http_resource('DELETE', ('orgs', self.login, 'public_members', username), check_status=False)
|
||||||
|
return (r.status_code == 204)
|
||||||
|
|
||||||
|
def remove_member(self, username):
|
||||||
|
if isinstance(username, User):
|
||||||
|
username = username.login
|
||||||
|
|
||||||
|
r = self._gh._http_resource('DELETE', ('orgs', self.login, 'members', username), check_status=False)
|
||||||
|
return (r.status_code == 204)
|
||||||
|
|
||||||
|
def public_members(self, limit=None):
|
||||||
|
return self._gh._get_resources(('orgs', self.login, 'public_members'), User, limit=limit)
|
||||||
|
|
||||||
|
def is_public_member(self, username):
|
||||||
|
if isinstance(username, User):
|
||||||
|
username = username.login
|
||||||
|
|
||||||
|
r = self._gh._http_resource('GET', ('orgs', self.login, 'public_members', username), check_status=False)
|
||||||
|
return (r.status_code == 204)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Repo(BaseResource):
|
class Repo(BaseResource):
|
||||||
|
|||||||
Reference in New Issue
Block a user