aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3
diff options
context:
space:
mode:
Diffstat (limited to 'pygithub3')
-rw-r--r--pygithub3/core/ghrequests/__init__.py4
-rw-r--r--pygithub3/core/ghrequests/users/__init__.py2
-rw-r--r--pygithub3/core/ghrequests/users/emails.py4
-rw-r--r--pygithub3/core/ghrequests/users/followers.py38
-rw-r--r--pygithub3/core/ghrequests/users/keys.py79
-rw-r--r--pygithub3/core/ghrequests/users/user.py15
-rw-r--r--pygithub3/core/result.py4
-rw-r--r--pygithub3/resources/base.py2
-rw-r--r--pygithub3/resources/users.py6
-rw-r--r--pygithub3/services/users.py44
10 files changed, 177 insertions, 21 deletions
diff --git a/pygithub3/core/ghrequests/__init__.py b/pygithub3/core/ghrequests/__init__.py
index b4faae5..c461bec 100644
--- a/pygithub3/core/ghrequests/__init__.py
+++ b/pygithub3/core/ghrequests/__init__.py
@@ -60,7 +60,7 @@ class Request(object):
update_params = {
valid_key: to_parse[valid_key]
for valid_key in self.valid
- if to_parse.has_key(valid_key)}
+ if valid_key in to_parse}
return update_params
@@ -71,7 +71,7 @@ class Factory(object):
def __init__(self):
""" """
- self.args = {}
+ self.args = {}
def config_with(self, **kwargs):
self.args = kwargs
diff --git a/pygithub3/core/ghrequests/users/__init__.py b/pygithub3/core/ghrequests/users/__init__.py
index 08986f6..c9ef5b5 100644
--- a/pygithub3/core/ghrequests/users/__init__.py
+++ b/pygithub3/core/ghrequests/users/__init__.py
@@ -1,4 +1,4 @@
# -*- encoding: utf-8 -*-
-from pygithub3.core.ghrequests import Request
+from pygithub3.core.ghrequests import Request, json, RequestValidationError
from user import *
diff --git a/pygithub3/core/ghrequests/users/emails.py b/pygithub3/core/ghrequests/users/emails.py
index 991abc6..f7fb284 100644
--- a/pygithub3/core/ghrequests/users/emails.py
+++ b/pygithub3/core/ghrequests/users/emails.py
@@ -15,9 +15,10 @@ class List(Request):
def set_uri(self):
return 'user/emails'
+
class Add(Request):
- resource = Raw
+ resource = Raw
def validate(self):
pass
@@ -28,6 +29,7 @@ class Add(Request):
def set_uri(self):
return 'user/emails'
+
class Delete(Request):
resource = Raw
diff --git a/pygithub3/core/ghrequests/users/followers.py b/pygithub3/core/ghrequests/users/followers.py
index e71313d..f2bfc1a 100644
--- a/pygithub3/core/ghrequests/users/followers.py
+++ b/pygithub3/core/ghrequests/users/followers.py
@@ -1,10 +1,9 @@
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
-from . import Request
+from . import Request, RequestValidationError
from pygithub3.resources.users import User
-
-__all__ = ('List',)
+from pygithub3.resources.base import Raw
class List(Request):
@@ -34,13 +33,44 @@ class Listfollowing(Request):
else:
return 'user/following'
+
+class Isfollowing(Request):
+
+ resource = Raw
+
+ def validate(self):
+ if not self.user:
+ raise RequestValidationError(
+ "'%s' request needs a user" % self.__class__.__name__)
+
+ def set_uri(self):
+ return 'user/following/%s' % self.user
+
+
+class Follow(Request):
+
+ resource = Raw
+
+ def validate(self):
+ if not self.user:
+ raise RequestValidationError(
+ "'%s' request needs a user" % self.__class__.__name__)
+
+ def set_uri(self):
+ return 'user/following/%s' % self.user
+
+
class Unfollow(Request):
resource = User
def validate(self):
if not self.user:
- raise Exception('unfollow ened user') # TODO: validate exception
+ raise RequestValidationError(
+ "'%s' request needs a user" % self.__class__.__name__)
def set_uri(self):
return 'user/following/%s' % self.user
+
+ def get_data(self):
+ pass
diff --git a/pygithub3/core/ghrequests/users/keys.py b/pygithub3/core/ghrequests/users/keys.py
index e69de29..f5bb386 100644
--- a/pygithub3/core/ghrequests/users/keys.py
+++ b/pygithub3/core/ghrequests/users/keys.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+
+from . import Request, json, RequestValidationError
+from pygithub3.resources.users import Key
+from pygithub3.resources.base import Raw
+
+
+class List(Request):
+
+ resource = Key
+
+ def validate(self):
+ pass
+
+ def set_uri(self):
+ return 'user/keys'
+
+
+class Get(Request):
+
+ resource = Key
+
+ def validate(self):
+ if not self.key_id:
+ raise RequestValidationError("'%s' needs key_id"
+ % self.__class__.__name__)
+
+ def set_uri(self):
+ return 'user/keys/%s' % self.key_id
+
+
+class Add(Request):
+
+ resource = Key
+ valid = ('title', 'key')
+
+ def validate(self):
+ self.add_data = self._parse_simple_dict(self.add_data)
+
+ def set_uri(self):
+ return 'user/keys'
+
+ def get_data(self):
+ return json.dumps(self.add_data)
+
+
+class Update(Request):
+
+ resource = Key
+ valid = ('title', 'key')
+
+ def validate(self):
+ if not self.key_id:
+ raise RequestValidationError("'%s' needs key_id"
+ % self.__class__.__name__)
+ self.update_params = self._parse_simple_dict(self.update_with)
+
+ def set_uri(self):
+ return 'user/keys/%s' % self.key_id
+
+ def get_data(self):
+ return json.dumps(self.update_params)
+
+
+class Delete(Request):
+
+ resource = Raw
+
+ def validate(self):
+ if not self.key_id:
+ raise RequestValidationError("'%s' needs key_id"
+ % self.__class__.__name__)
+
+ def set_uri(self):
+ return 'user/keys/%s' % self.key_id
+
+ def get_data(self):
+ return None
diff --git a/pygithub3/core/ghrequests/users/user.py b/pygithub3/core/ghrequests/users/user.py
index 18a356e..d4b3667 100644
--- a/pygithub3/core/ghrequests/users/user.py
+++ b/pygithub3/core/ghrequests/users/user.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
-from . import Request
+from . import Request, json
from pygithub3.resources.users import User
__all__ = ('Get', 'Update')
@@ -22,4 +22,15 @@ class Get(Request):
class Update(Request):
- pass
+
+ resource = User
+ valid = ('name', 'email', 'blog', 'company', 'location', 'hireable', 'bio')
+
+ def validate(self):
+ self.update_params = self._parse_simple_dict(self.update_with)
+
+ def get_data(self):
+ return json.dumps(self.update_params)
+
+ def set_uri(self):
+ return 'user'
diff --git a/pygithub3/core/result.py b/pygithub3/core/result.py
index f0b3016..5d8ea7a 100644
--- a/pygithub3/core/result.py
+++ b/pygithub3/core/result.py
@@ -16,7 +16,7 @@ class Method(object):
def cached(func):
def wrapper(self, page=1):
- if self.cache.has_key(str(page)):
+ if str(page) in self.cache:
return self.cache[str(page)]
return func(self, page)
return wrapper
@@ -34,6 +34,7 @@ class Method(object):
@if_needs_lastpage
def __set_last_page_from(self, response):
link_parsed = parse_link_value(response.headers['link'])
+
def get_last(url):
url_rels = link_parsed[url]
return (url_rels.get('rel') == 'last')
@@ -57,6 +58,7 @@ class Method(object):
self()
return self.last_page
+
class Page(object):
""" """
diff --git a/pygithub3/resources/base.py b/pygithub3/resources/base.py
index 5a9418a..620df3e 100644
--- a/pygithub3/resources/base.py
+++ b/pygithub3/resources/base.py
@@ -60,7 +60,7 @@ class Resource(object):
{attr: parse_date(raw_resource[attr])
for attr in self._dates if attr in raw_resource})
raw_resource.update(
- {attr: parse_map(resource , raw_resource[attr])
+ {attr: parse_map(resource, raw_resource[attr])
for attr, resource in self._maps.items()
if attr in raw_resource})
raw_resource.update(
diff --git a/pygithub3/resources/users.py b/pygithub3/resources/users.py
index 7e40025..5485bf6 100644
--- a/pygithub3/resources/users.py
+++ b/pygithub3/resources/users.py
@@ -6,6 +6,12 @@ from .base import Resource
__all__ = ('Plan', 'User')
+class Key(Resource):
+
+ def __str__(self):
+ return '<Key (%s)>' % getattr(self, 'title', '')
+
+
class Plan(Resource):
def __str__(self):
diff --git a/pygithub3/services/users.py b/pygithub3/services/users.py
index c4878dd..9ec15e8 100644
--- a/pygithub3/services/users.py
+++ b/pygithub3/services/users.py
@@ -7,34 +7,59 @@ from .base import Base
class Keys(Base):
def list(self):
- return self.get_resource('user/keys')
+ return self._get_result('users.keys.list')
+
+ def get(self, key_id):
+ self._config_request(key_id=key_id)
+ return self._get('users.keys.get')
+
+ def add(self, data):
+ self._config_request(add_data=data)
+ return self._post('users.keys.add')
+
+ def update(self, key_id, data):
+ self._config_request(key_id=key_id, update_with=data)
+ return self._patch('users.keys.update')
+
+ def delete(self, key_id):
+ self._config_request(key_id=key_id)
+ self._delete('users.keys.delete')
class Followers(Base):
def list(self, user=None):
- self.config_request(user=user or self.client.user)
+ self._config_request(user=user or self.get_user())
return self._get_result('users.followers.list')
def list_following(self, user=None):
- self.config_request(user=user or self.client.user)
+ self._config_request(user=user or self.get_user())
return self._get_result('users.followers.listfollowing')
+ def is_following(self, user):
+ self._config_request(user=user)
+ return self._bool('users.followers.isfollowing')
+
+ def follow(self, user):
+ self._config_request(user=user)
+ self._put('users.followers.follow')
+
def unfollow(self, user):
- self.config_request(user=user)
+ self._config_request(user=user)
self._delete('users.followers.unfollow')
+
class Emails(Base):
def list(self):
return self._get_result('users.emails.list')
def add(self, *args):
- self.config_request(emails=args)
+ self._config_request(emails=args)
return self._post('users.emails.add')
def delete(self, *args):
- self.config_request(emails=args)
+ self._config_request(emails=args)
self._delete('users.emails.delete')
@@ -47,8 +72,9 @@ class User(Base):
super(User, self).__init__(**kwargs)
def get(self, user=None):
- self.config_request(user=user or self.client.user)
+ self._config_request(user=user or self.get_user())
return self._get('users.get')
- def update(self):
- pass
+ def update(self, data):
+ self._config_request(update_with=data)
+ return self._patch('users.update')