@@ -122,6 +122,9 @@ def __init__(self, url, private_token=None,
122122 #: Whether SSL certificates should be validated
123123 self .ssl_verify = ssl_verify
124124
125+ #: Create a session object for requests
126+ self .session = requests .Session ()
127+
125128 self .settings = ApplicationSettingsManager (self )
126129 self .user_keys = UserKeyManager (self )
127130 self .users = UserManager (self )
@@ -260,11 +263,11 @@ def _raw_get(self, path, content_type=None, **kwargs):
260263 headers = self ._create_headers (content_type )
261264
262265 try :
263- return requests .get (url ,
264- params = kwargs ,
265- headers = headers ,
266- verify = self .ssl_verify ,
267- timeout = self .timeout )
266+ return self . session .get (url ,
267+ params = kwargs ,
268+ headers = headers ,
269+ verify = self .ssl_verify ,
270+ timeout = self .timeout )
268271 except Exception as e :
269272 raise GitlabConnectionError (
270273 "Can't connect to GitLab server (%s)" % e )
@@ -298,10 +301,10 @@ def _raw_post(self, path, data=None, content_type=None, **kwargs):
298301 url = '%s%s' % (self ._url , path )
299302 headers = self ._create_headers (content_type )
300303 try :
301- return requests .post (url , params = kwargs , data = data ,
302- headers = headers ,
303- verify = self .ssl_verify ,
304- timeout = self .timeout )
304+ return self . session .post (url , params = kwargs , data = data ,
305+ headers = headers ,
306+ verify = self .ssl_verify ,
307+ timeout = self .timeout )
305308 except Exception as e :
306309 raise GitlabConnectionError (
307310 "Can't connect to GitLab server (%s)" % e )
@@ -311,10 +314,10 @@ def _raw_put(self, path, data=None, content_type=None, **kwargs):
311314 headers = self ._create_headers (content_type )
312315
313316 try :
314- return requests .put (url , data = data , params = kwargs ,
315- headers = headers ,
316- verify = self .ssl_verify ,
317- timeout = self .timeout )
317+ return self . session .put (url , data = data , params = kwargs ,
318+ headers = headers ,
319+ verify = self .ssl_verify ,
320+ timeout = self .timeout )
318321 except Exception as e :
319322 raise GitlabConnectionError (
320323 "Can't connect to GitLab server (%s)" % e )
@@ -324,11 +327,11 @@ def _raw_delete(self, path, content_type=None, **kwargs):
324327 headers = self ._create_headers (content_type )
325328
326329 try :
327- return requests .delete (url ,
328- params = kwargs ,
329- headers = headers ,
330- verify = self .ssl_verify ,
331- timeout = self .timeout )
330+ return self . session .delete (url ,
331+ params = kwargs ,
332+ headers = headers ,
333+ verify = self .ssl_verify ,
334+ timeout = self .timeout )
332335 except Exception as e :
333336 raise GitlabConnectionError (
334337 "Can't connect to GitLab server (%s)" % e )
@@ -365,10 +368,14 @@ def list(self, obj_class, **kwargs):
365368 for attribute in obj_class .requiredUrlAttrs :
366369 del params [attribute ]
367370
371+ # Also remove the next-url attribute that make queries fail
372+ if 'next_url' in params :
373+ del params ['next_url' ]
374+
368375 try :
369- r = requests .get (url , params = params , headers = headers ,
370- verify = self .ssl_verify ,
371- timeout = self .timeout )
376+ r = self . session .get (url , params = params , headers = headers ,
377+ verify = self .ssl_verify ,
378+ timeout = self .timeout )
372379 except Exception as e :
373380 raise GitlabConnectionError (
374381 "Can't connect to GitLab server (%s)" % e )
@@ -434,8 +441,8 @@ def get(self, obj_class, id=None, **kwargs):
434441 del params [attribute ]
435442
436443 try :
437- r = requests .get (url , params = params , headers = headers ,
438- verify = self .ssl_verify , timeout = self .timeout )
444+ r = self . session .get (url , params = params , headers = headers ,
445+ verify = self .ssl_verify , timeout = self .timeout )
439446 except Exception as e :
440447 raise GitlabConnectionError (
441448 "Can't connect to GitLab server (%s)" % e )
@@ -487,11 +494,11 @@ def delete(self, obj, id=None, **kwargs):
487494 del params [attribute ]
488495
489496 try :
490- r = requests .delete (url ,
491- params = params ,
492- headers = headers ,
493- verify = self .ssl_verify ,
494- timeout = self .timeout )
497+ r = self . session .delete (url ,
498+ params = params ,
499+ headers = headers ,
500+ verify = self .ssl_verify ,
501+ timeout = self .timeout )
495502 except Exception as e :
496503 raise GitlabConnectionError (
497504 "Can't connect to GitLab server (%s)" % e )
@@ -535,10 +542,10 @@ def create(self, obj, **kwargs):
535542 data = obj ._data_for_gitlab (extra_parameters = kwargs )
536543
537544 try :
538- r = requests .post (url , data = data ,
539- headers = headers ,
540- verify = self .ssl_verify ,
541- timeout = self .timeout )
545+ r = self . session .post (url , data = data ,
546+ headers = headers ,
547+ verify = self .ssl_verify ,
548+ timeout = self .timeout )
542549 except Exception as e :
543550 raise GitlabConnectionError (
544551 "Can't connect to GitLab server (%s)" % e )
@@ -585,10 +592,10 @@ def update(self, obj, **kwargs):
585592 data = obj ._data_for_gitlab (extra_parameters = kwargs , update = True )
586593
587594 try :
588- r = requests .put (url , data = data ,
589- headers = headers ,
590- verify = self .ssl_verify ,
591- timeout = self .timeout )
595+ r = self . session .put (url , data = data ,
596+ headers = headers ,
597+ verify = self .ssl_verify ,
598+ timeout = self .timeout )
592599 except Exception as e :
593600 raise GitlabConnectionError (
594601 "Can't connect to GitLab server (%s)" % e )
0 commit comments