diff --git a/gogs_client/_implementation/http_utils.py b/gogs_client/_implementation/http_utils.py index 72dd893..4114e63 100644 --- a/gogs_client/_implementation/http_utils.py +++ b/gogs_client/_implementation/http_utils.py @@ -11,8 +11,9 @@ class RelativeHttpRequestor(object): A thin wrapper around the requests module that allows for endpoint paths to be given relative to a fixed base URL """ - def __init__(self, base_url): + def __init__(self, base_url, session=None): self.base_url = base_url + self.session = session or requests.Session() def absolute_url(self, relative_path): """ @@ -26,22 +27,22 @@ def absolute_url(self, relative_path): # except that they expect relative paths def delete(self, relative_path, **kwargs): - return requests.delete(self.absolute_url(relative_path), **kwargs) + return self.session.delete(self.absolute_url(relative_path), **kwargs) def get(self, relative_path, params=None, **kwargs): - return requests.get(self.absolute_url(relative_path), params=params, **kwargs) + return self.session.get(self.absolute_url(relative_path), params=params, **kwargs) def options(self, relative_path, params=None, **kwargs): - return requests.options(self.absolute_url(relative_path), params=params, **kwargs) + return self.session.options(self.absolute_url(relative_path), params=params, **kwargs) def patch(self, relative_path, data=None, **kwargs): - return requests.patch(self.absolute_url(relative_path), data=data, **kwargs) + return self.session.patch(self.absolute_url(relative_path), data=data, **kwargs) def post(self, relative_path, data=None, **kwargs): - return requests.post(self.absolute_url(relative_path), data=data, **kwargs) + return self.session.post(self.absolute_url(relative_path), data=data, **kwargs) def put(self, relative_path, params=None, data=None, **kwargs): - return requests.put(self.absolute_url(relative_path), params=params, data=data, **kwargs) + return self.session.put(self.absolute_url(relative_path), params=params, data=data, **kwargs) def append_url(base_url, path): diff --git a/gogs_client/interface.py b/gogs_client/interface.py index b34a422..597860d 100644 --- a/gogs_client/interface.py +++ b/gogs_client/interface.py @@ -9,13 +9,14 @@ class GogsApi(object): A Gogs client, serving as a wrapper around the Gogs HTTP API. """ - def __init__(self, base_url): + def __init__(self, base_url, session=None): """ :param str base_url: the URL of the Gogs server to communicate with. Should be given with the https protocol + :param str session: a requests session instance """ api_base = append_url(base_url, "/api/v1/") - self._requestor = RelativeHttpRequestor(api_base) + self._requestor = RelativeHttpRequestor(api_base, session=session) def valid_authentication(self, auth): """