@@ -104,10 +104,14 @@ def __repr__(self):
104104 def repos (self , limit = None ):
105105 return self ._gh ._get_resources (('users' , self .login , 'repos' ), Repo , limit = limit )
106106
107+ def repo (self , reponame ):
108+ return self ._gh ._get_resource (('repos' , self .login , reponame ), Repo )
109+
107110 def orgs (self ):
108111 return self ._gh ._get_resources (('users' , self .login , 'orgs' ), Org )
109112
110113
114+
111115class CurrentUser (User ):
112116 """Github Current User object model."""
113117
@@ -128,16 +132,23 @@ def __repr__(self):
128132 def repos (self , limit = None ):
129133 return self ._gh ._get_resources (('user' , 'repos' ), Repo , limit = limit )
130134
131- def orgs (self ):
132- return self ._gh ._get_resources (('user' , 'orgs' ), Org )
135+ def repo (self , reponame ):
136+ return self ._gh ._get_resource (('repos' , self .login , reponame ), Repo )
137+
138+ def orgs (self , limit = None ):
139+ return self ._gh ._get_resources (('user' , 'orgs' ), Org , limit = limit )
140+
141+ def org (self , orgname ):
142+ return self ._gh ._get_resource (('orgs' , orgname ), Org )
143+
133144
134145
135146class Org (BaseResource ):
136147 """Github Organization object model."""
137148
138149 _strs = [
139150 'login' , 'url' , 'avatar_url' , 'name' , 'company' , 'blog' , 'location' , 'email'
140- 'html_url' , 'type' ]
151+ 'html_url' , 'type' , 'billing_email' ]
141152 _ints = [
142153 'id' , 'public_repos' , 'public_gists' , 'followers' , 'following' ,
143154 'total_private_repos' , 'owned_private_repos' , 'private_gists' , 'disk_usage' ,
@@ -146,11 +157,58 @@ class Org(BaseResource):
146157 _map = {'plan' : Plan }
147158 _writable = ['billing_email' , 'blog' , 'company' , 'email' , 'location' , 'name' ]
148159
160+ @property
161+ def ri (self ):
162+ return ('orgs' , self .login )
163+
149164 def __repr__ (self ):
150165 return '<org {0}>' .format (self .login )
151166
152167 def repos (self , limit = None ):
153- return self ._gh ._get_resources (('orgs' , self .login , 'repos' ), Repo )
168+ return self ._gh ._get_resources (('orgs' , self .login , 'repos' ), Repo , limit = limit )
169+
170+ def members (self , limit = None ):
171+ return self ._gh ._get_resources (('orgs' , self .login , 'members' ), User , limit = limit )
172+
173+ def is_member (self , username ):
174+ if isinstance (username , User ):
175+ username = username .login
176+
177+ r = self ._gh ._http_resource ('GET' , ('orgs' , self .login , 'members' , username ), check_status = False )
178+ return (r .status_code == 204 )
179+
180+ def publicize_member (self , username ):
181+ if isinstance (username , User ):
182+ username = username .login
183+
184+ r = self ._gh ._http_resource ('PUT' , ('orgs' , self .login , 'public_members' , username ), check_status = False , data = '' )
185+ return (r .status_code == 204 )
186+
187+ def conceal_member (self , username ):
188+ if isinstance (username , User ):
189+ username = username .login
190+
191+ r = self ._gh ._http_resource ('DELETE' , ('orgs' , self .login , 'public_members' , username ), check_status = False )
192+ return (r .status_code == 204 )
193+
194+ def remove_member (self , username ):
195+ if isinstance (username , User ):
196+ username = username .login
197+
198+ r = self ._gh ._http_resource ('DELETE' , ('orgs' , self .login , 'members' , username ), check_status = False )
199+ return (r .status_code == 204 )
200+
201+ def public_members (self , limit = None ):
202+ return self ._gh ._get_resources (('orgs' , self .login , 'public_members' ), User , limit = limit )
203+
204+ def is_public_member (self , username ):
205+ if isinstance (username , User ):
206+ username = username .login
207+
208+ r = self ._gh ._http_resource ('GET' , ('orgs' , self .login , 'public_members' , username ), check_status = False )
209+ return (r .status_code == 204 )
210+
211+
154212
155213
156214class Repo (BaseResource ):
0 commit comments