aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/services
diff options
context:
space:
mode:
authorDavid Medina <davidmedina9@gmail.com>2012-02-04 19:07:23 +0100
committerDavid Medina <davidmedina9@gmail.com>2012-02-04 19:07:23 +0100
commit8a723b0815841ea9e34c148b06c0fa6529b90e33 (patch)
tree6161c4aef077d2ac9e2430d935f53e37117a0b9b /pygithub3/services
parentFull support to Result dynamic and lazy iterator (diff)
downloadpython-github3-8a723b0815841ea9e34c148b06c0fa6529b90e33.tar.xz
python-github3-8a723b0815841ea9e34c148b06c0fa6529b90e33.zip
Renaming (What I was thinking?)
resources => ghrequests models => resources + Also it's near to complete user service
Diffstat (limited to '')
-rw-r--r--pygithub3/services/base.py47
-rw-r--r--pygithub3/services/users.py31
2 files changed, 47 insertions, 31 deletions
diff --git a/pygithub3/services/base.py b/pygithub3/services/base.py
index 303b3a0..98969c6 100644
--- a/pygithub3/services/base.py
+++ b/pygithub3/services/base.py
@@ -2,12 +2,15 @@
# -*- encoding: utf-8 -*-
from pygithub3.core.client import Client
+from pygithub3.core.result import Result
+from pygithub3.core.ghrequests import Factory
class Base(object):
def __init__(self, **config):
self.client = Client(**config)
+ self.get_request = Factory()
def get_user(self):
return self.client.user
@@ -21,23 +24,27 @@ class Base(object):
def set_repo(self, repo):
self.client.repo = repo
- def _get_result(self, resource, **kwargs):
- return Result(self.client.get, resource, **kwargs)
-
-
-class Result(object): # move
-
- def __init__(self, method, resource, **kwargs):
- self.method = method
- self.resource = resource
- self.args = kwargs
-
- def __repr__(self):
- pass
-
- def process(self):
- model = self.resource.get_model()
- raw = self.method(self.resource, **self.args)
- if model:
- import json
- return model.loads(json.loads(raw.content))
+ def config_request(self, **kwargs):
+ self.get_request.config_with(**kwargs)
+
+ def _delete(self, request_uri, **kwargs):
+ request = self.get_request(request_uri)
+ input_data = request.get_data()
+ self.client.delete(request, data=input_data)
+
+ def _post(self, request_uri, **kwargs):
+ request = self.get_request(request_uri)
+ resource = request.get_resource()
+ input_data = request.get_data()
+ response = self.client.post(request, data=input_data)
+ return resource.loads(response.content)
+
+ def _get(self, request_uri, **kwargs):
+ request = self.get_request(request_uri)
+ resource = request.get_resource()
+ response = self.client.get(request, **kwargs)
+ return resource.loads(response.content)
+
+ def _get_result(self, request_uri, **kwargs):
+ request = self.get_request(request_uri)
+ return Result(self.client, request, **kwargs)
diff --git a/pygithub3/services/users.py b/pygithub3/services/users.py
index 70826f2..c4878dd 100644
--- a/pygithub3/services/users.py
+++ b/pygithub3/services/users.py
@@ -2,7 +2,6 @@
# -*- encoding: utf-8 -*-
from .base import Base
-from pygithub3.core.resources import Factory
class Keys(Base):
@@ -13,20 +12,30 @@ class Keys(Base):
class Followers(Base):
- def list(self, user):
- pass
+ def list(self, user=None):
+ self.config_request(user=user or self.client.user)
+ return self._get_result('users.followers.list')
+
+ def list_following(self, user=None):
+ self.config_request(user=user or self.client.user)
+ return self._get_result('users.followers.listfollowing')
+ def unfollow(self, user):
+ self.config_request(user=user)
+ self._delete('users.followers.unfollow')
class Emails(Base):
def list(self):
- pass
+ return self._get_result('users.emails.list')
- def add(self):
- pass
+ def add(self, *args):
+ self.config_request(emails=args)
+ return self._post('users.emails.add')
- def delete(self):
- pass
+ def delete(self, *args):
+ self.config_request(emails=args)
+ self._delete('users.emails.delete')
class User(Base):
@@ -37,9 +46,9 @@ class User(Base):
self.followers = Followers(**kwargs)
super(User, self).__init__(**kwargs)
- def get(self, user):
- resource = Factory(user=user or self.client.user)
- return self._get_result(resource('users.get'))
+ def get(self, user=None):
+ self.config_request(user=user or self.client.user)
+ return self._get('users.get')
def update(self):
pass