Skip to content
This repository was archived by the owner on Dec 17, 2019. It is now read-only.

Commit eeb5b97

Browse files
committed
Small refactor to building requests in services
Decorate the request-factory to parse common params like user and repo, which can be configurated in service or by args
1 parent 4eae7de commit eeb5b97

File tree

4 files changed

+35
-52
lines changed

4 files changed

+35
-52
lines changed

README.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ Contribute
5959
2. Write a test to cover new feature or to reproduce bug
6060
3. Code with `pep8 <http://www.python.org/dev/peps/pep-0008/>`_ rules
6161
4. Add you to ``AUTHORS``
62-
5. Push to ``develop`` branch
62+
5. Pull request it
6363

64-
**Note**: I use `nose <http://readthedocs.org/docs/nose/en/latest/>`_ test environment. ``pip install nose``
64+
**Note**: I use `nose <http://readthedocs.org/docs/nose/en/latest/>`_ test environment,
65+
with `mock <http://www.voidspace.org.uk/python/mock/>`_ ``pip install nose mock``

pygithub3/services/base.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class Service(object):
1111

1212
def __init__(self, **config):
1313
self._client = Client(**config)
14-
self.make_request = Factory()
14+
self.request_builder = Factory()
1515

1616
def get_user(self):
1717
return self._client.user
@@ -31,6 +31,13 @@ def set_credentials(self, login, password):
3131
def set_token(self, token):
3232
self._client.set_token(token)
3333

34+
def make_request(self, request, **kwargs):
35+
if 'user' in kwargs:
36+
kwargs['user'] = kwargs['user'] or self.get_user()
37+
if 'repo' in kwargs:
38+
kwargs['repo'] = kwargs['repo'] or self.get_repo()
39+
return self.request_builder(request, **kwargs)
40+
3441
def _bool(self, request, **kwargs):
3542
try:
3643
self._client.head(request, **kwargs)

pygithub3/services/repos.py

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,22 @@ class Collaborator(Service):
88

99
def list(self, user=None, repo=None):
1010
request = self.make_request('repos.collaborators.list',
11-
user=user or self.get_user(),
12-
repo=repo or self.get_repo())
11+
user=user, repo=repo)
1312
return self._get_result(request)
1413

1514
def add(self, collaborator, user=None, repo=None):
1615
request = self.make_request('repos.collaborators.add',
17-
collaborator=collaborator,
18-
user=user or self.get_user(),
19-
repo=repo or self.get_repo())
16+
collaborator=collaborator, user=user, repo=repo)
2017
return self._put(request)
2118

2219
def is_collaborator(self, collaborator, user=None, repo=None):
2320
request = self.make_request('repos.collaborators.is_collaborator',
24-
collaborator=collaborator,
25-
user=user or self.get_user(),
26-
repo=repo or self.get_repo())
21+
collaborator=collaborator, user=user, repo=repo)
2722
return self._bool(request)
2823

2924
def delete(self, collaborator, user=None, repo=None):
3025
request = self.make_request('repos.collaborators.delete',
31-
collaborator=collaborator,
32-
user=user or self.get_user(),
33-
repo=repo or self.get_repo())
26+
collaborator=collaborator, user=user, repo=repo)
3427
self._delete(request)
3528

3629

@@ -41,8 +34,7 @@ def __init__(self, **config):
4134
super(Repo, self).__init__(**config)
4235

4336
def list(self, user=None, type='all'):
44-
request = self.make_request('repos.list',
45-
user=user or self.get_user())
37+
request = self.make_request('repos.list', user=user)
4638
return self._get_result(request, type=type)
4739

4840
def list_by_org(self, org, type='all'):
@@ -54,22 +46,17 @@ def create(self, data, in_org=None):
5446
return self._post(request)
5547

5648
def get(self, user=None, repo=None):
57-
request = self.make_request('repos.get',
58-
user=user or self.get_user(),
59-
repo=repo or self.get_repo())
49+
request = self.make_request('repos.get', user=user, repo=repo)
6050
return self._get(request)
6151

6252
def update(self, data, user=None, repo=None):
63-
request = self.make_request('repos.update',
64-
body=data,
65-
user=user or self.get_user(),
66-
repo=repo or self.get_repo())
53+
request = self.make_request('repos.update', body=data,
54+
user=user, repo=repo)
6755
return self._patch(request)
6856

6957
def __list_contributors(self, user=None, repo=None, **kwargs):
7058
request = self.make_request('repos.list_contributors',
71-
user=user or self.get_user(),
72-
repo=repo or self.get_repo())
59+
user=user, repo=repo)
7360
return self._get_result(request, **kwargs)
7461

7562
def list_contributors(self, user=None, repo=None):
@@ -80,24 +67,18 @@ def list_contributors_with_anonymous(self, user=None, repo=None):
8067

8168
def list_languages(self, user=None, repo=None):
8269
request = self.make_request('repos.list_languages',
83-
user=user or self.get_user(),
84-
repo=repo or self.get_repo())
70+
user=user, repo=repo)
8571
return self._get(request)
8672

8773
def list_teams(self, user=None, repo=None):
88-
request = self.make_request('repos.list_teams',
89-
user=user or self.get_user(),
90-
repo=repo or self.get_repo())
74+
request = self.make_request('repos.list_teams', user=user, repo=repo)
9175
return self._get_result(request)
9276

9377
def list_tags(self, user=None, repo=None):
94-
request = self.make_request('repos.list_tags',
95-
user=user or self.get_user(),
96-
repo=repo or self.get_repo())
78+
request = self.make_request('repos.list_tags', user=user, repo=repo)
9779
return self._get_result(request)
9880

9981
def list_branches(self, user=None, repo=None):
10082
request = self.make_request('repos.list_branches',
101-
user=user or self.get_user(),
102-
repo=repo or self.get_repo())
83+
user=user, repo=repo)
10384
return self._get_result(request)

pygithub3/services/users.py

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,28 +34,23 @@ def delete(self, key_id):
3434
class Followers(Service):
3535

3636
def list(self, user=None):
37-
request = self.make_request('users.followers.list',
38-
user=user or self.get_user())
37+
request = self.make_request('users.followers.list', user=user)
3938
return self._get_result(request)
4039

4140
def list_following(self, user=None):
42-
request = self.make_request('users.followers.listfollowing',
43-
user=user or self.get_user())
41+
request = self.make_request('users.followers.listfollowing', user=user)
4442
return self._get_result(request)
4543

4644
def is_following(self, user):
47-
request = self.make_request('users.followers.isfollowing',
48-
user=user)
45+
request = self.make_request('users.followers.isfollowing', user=user)
4946
return self._bool(request)
5047

5148
def follow(self, user):
52-
request = self.make_request('users.followers.follow',
53-
user=user)
49+
request = self.make_request('users.followers.follow', user=user)
5450
self._put(request)
5551

5652
def unfollow(self, user):
57-
request = self.make_request('users.followers.unfollow',
58-
user=user)
53+
request = self.make_request('users.followers.unfollow', user=user)
5954
self._delete(request)
6055

6156

@@ -76,15 +71,14 @@ def delete(self, *emails):
7671

7772
class User(Service):
7873

79-
def __init__(self, **kwargs):
80-
self.keys = Keys(**kwargs)
81-
self.emails = Emails(**kwargs)
82-
self.followers = Followers(**kwargs)
83-
super(User, self).__init__(**kwargs)
74+
def __init__(self, **config):
75+
self.keys = Keys(**config)
76+
self.emails = Emails(**config)
77+
self.followers = Followers(**config)
78+
super(User, self).__init__(**config)
8479

8580
def get(self, user=None):
86-
request = self.make_request('users.get',
87-
user=user or self.get_user())
81+
request = self.make_request('users.get', user=user)
8882
return self._get(request)
8983

9084
def update(self, data):

0 commit comments

Comments
 (0)