@@ -52,9 +52,9 @@ def authenticate(self, email=None, password=None):
5252
5353 r = self .rawPost ('/session' , {'email' : email , 'password' : password })
5454 if r .status_code == 201 :
55- self .user = User (self , r .json )
55+ self .user = CurrentUser (self , r .json )
5656 else :
57- raise GitlabAuthenticationError ()
57+ raise GitlabAuthenticationError (r . json [ 'message' ] )
5858
5959 self .private_token = self .user .private_token
6060
@@ -189,6 +189,24 @@ def update(self, objClass, id, objData, **kwargs):
189189 else :
190190 raise GitlabUpdateError ('%d: %s' % (r .status_code , r .text ))
191191
192+ def getListOrObject (self , cls , id , ** kwargs ):
193+ if id == None :
194+ return cls .list (self , ** kwargs )
195+ else :
196+ return cls .get (self , id , ** kwargs )
197+
198+ def Project (self , id = None ):
199+ return self .getListOrObject (Project , id )
200+
201+ def Group (self , id = None ):
202+ return self .getListOrObject (Group , id )
203+
204+ def Issue (self , id = None ):
205+ return self .getListOrObject (Issue , id )
206+
207+ def User (self , id = None ):
208+ return self .getListOrObject (User , id )
209+
192210
193211class GitlabObject (object ):
194212 url = None
@@ -282,18 +300,22 @@ def __str__(self):
282300class User (GitlabObject ):
283301 url = '/users'
284302
303+ class CurrentUserKey (GitlabObject ):
304+ url = '/user/keys'
305+ canUpdate = False
306+
285307class CurrentUser (GitlabObject ):
286308 url = '/user'
287309 canGetList = False
288310 canCreate = False
289311 canUpdate = False
290312 canDelete = False
291313
292- class CurrentUserKey ( GitlabObject ):
293- url = '/user/keys'
294- canUpdate = False
295-
296- url = '/users'
314+ def Key ( self , id = None ):
315+ if id == None :
316+ return CurrentUserKey . list ( self . gitlab )
317+ else :
318+ return CurrentUserKey . get ( self . gitlab , id )
297319
298320class Group (GitlabObject ):
299321 url = '/groups'
0 commit comments