Skip to content

Commit 858352b

Browse files
committed
Adding a Session instance for all HTTP requests
The session instance will make it easier for setting up once headers, including the authentication payload, and it's also making it easier to override HTTP queries handling, when using [betamax](https://github.com/sigmavirus24/betamax) for recording and replaying the test suites.
1 parent 61bc24f commit 858352b

File tree

1 file changed

+39
-36
lines changed

1 file changed

+39
-36
lines changed

gitlab/__init__.py

+39-36
Original file line numberDiff line numberDiff line change
@@ -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)
@@ -366,9 +369,9 @@ def list(self, obj_class, **kwargs):
366369
del params[attribute]
367370

368371
try:
369-
r = requests.get(url, params=params, headers=headers,
370-
verify=self.ssl_verify,
371-
timeout=self.timeout)
372+
r = self.session.get(url, params=params, headers=headers,
373+
verify=self.ssl_verify,
374+
timeout=self.timeout)
372375
except Exception as e:
373376
raise GitlabConnectionError(
374377
"Can't connect to GitLab server (%s)" % e)
@@ -434,8 +437,8 @@ def get(self, obj_class, id=None, **kwargs):
434437
del params[attribute]
435438

436439
try:
437-
r = requests.get(url, params=params, headers=headers,
438-
verify=self.ssl_verify, timeout=self.timeout)
440+
r = self.session.get(url, params=params, headers=headers,
441+
verify=self.ssl_verify, timeout=self.timeout)
439442
except Exception as e:
440443
raise GitlabConnectionError(
441444
"Can't connect to GitLab server (%s)" % e)
@@ -487,11 +490,11 @@ def delete(self, obj, id=None, **kwargs):
487490
del params[attribute]
488491

489492
try:
490-
r = requests.delete(url,
491-
params=params,
492-
headers=headers,
493-
verify=self.ssl_verify,
494-
timeout=self.timeout)
493+
r = self.session.delete(url,
494+
params=params,
495+
headers=headers,
496+
verify=self.ssl_verify,
497+
timeout=self.timeout)
495498
except Exception as e:
496499
raise GitlabConnectionError(
497500
"Can't connect to GitLab server (%s)" % e)
@@ -535,10 +538,10 @@ def create(self, obj, **kwargs):
535538
data = obj._data_for_gitlab(extra_parameters=kwargs)
536539

537540
try:
538-
r = requests.post(url, data=data,
539-
headers=headers,
540-
verify=self.ssl_verify,
541-
timeout=self.timeout)
541+
r = self.session.post(url, data=data,
542+
headers=headers,
543+
verify=self.ssl_verify,
544+
timeout=self.timeout)
542545
except Exception as e:
543546
raise GitlabConnectionError(
544547
"Can't connect to GitLab server (%s)" % e)
@@ -585,10 +588,10 @@ def update(self, obj, **kwargs):
585588
data = obj._data_for_gitlab(extra_parameters=kwargs, update=True)
586589

587590
try:
588-
r = requests.put(url, data=data,
589-
headers=headers,
590-
verify=self.ssl_verify,
591-
timeout=self.timeout)
591+
r = self.session.put(url, data=data,
592+
headers=headers,
593+
verify=self.ssl_verify,
594+
timeout=self.timeout)
592595
except Exception as e:
593596
raise GitlabConnectionError(
594597
"Can't connect to GitLab server (%s)" % e)

0 commit comments

Comments
 (0)