Source code for pGerrit.client
import requests
from requests.packages.urllib3.util import Retry
from requests.adapters import HTTPAdapter
import requests_cache
[docs]class GerritClient(object):
"""
A class representing a Gerrit REST API client.
:param str host: The full URL to the server, including the `http(s)://` prefix.
:param auth: (optional) Authentication handler. Must be derived from `requests.auth.HTTPDigestAuth`.
:type auth: requests.auth.HTTPDigestAuth or None
:param cookies: (optional) Cookie jar to be used in the session.
:type cookies: requests.cookies.RequestsCookieJar or dict
:param bool verify: (optional) Set to False to disable verification of SSL certificates.
:param adapter: (optional) Custom connection adapter. Normally we use it to set `urllib3.util.Rety` object.
By default, there is 5 times retry behaviour.
:type adapter: requests.adapters.BaseAdapter or None
:param bool cache: (optional) Set to True to enable cache support. Defaults to True.
:param int cache_expire: (optional) The number of seconds to expire the cache after. Defaults to 3.
:return: An instance of GerritClient.
:rtype: pGerrit.GerritClient
"""
def __init__(self, host, auth=None, verify=True, adapter=None, cache=True, cache_expire=3):
"""See class docstring."""
self.host = host
if cache:
self.session = requests_cache.CachedSession(expire_after=cache_expire)
else:
self.session = requests.session()
self.verify = verify
if not adapter:
retry = Retry(
total=5,
read=5,
connect=5,
backoff_factor=0.3,
status_forcelist=(500, 502, 504),
)
adapter = HTTPAdapter(max_retries=retry)
self.session.mount("http://", adapter)
self.session.mount("https://", adapter)
self.adapter = adapter
self.cache = cache
self.cache_expire = cache_expire
if auth:
self.session.auth = auth
self.args = [host]
self.kwargs = {"auth": auth, "verify": verify, "adapter":adapter, "cache":cache, "cache_expire":cache_expire}
if not self.host.endswith("/"):
self.host += "/"
def __del__(self):
self.session.close()
@property
def change(self):
"""Provides an instance of GerritChange for the given Gerrit client configuration.
:param str id: the Change-id of Gerrit
:return: An instance of GerritChangeQueryDescriptor.
:rtype: pGerrit.queryDescriptor.GerritChangeQueryDescriptor
Usage::
gerrit_client = GerritClient(...)
changes = gerrit_client.change.query(...)
change = gerrit_client.change(12345).detail()
"""
from pGerrit.queryDescriptor import GerritChangeQueryDescriptor
return GerritChangeQueryDescriptor(self)
@property
def access(self):
"""Provides an instance of GerritAccess for the given Gerrit client configuration.
:return: An instance of GerritAccessQueryDescriptor.
:rtype: pGerrit.queryDescriptor.GerritAccessQueryDescriptor
Usage::
gerrit_client = GerritClient(...)
access = gerrit_client.access.query(...)
"""
from pGerrit.queryDescriptor import GerritAccessQueryDescriptor
return GerritAccessQueryDescriptor(self)
@property
def project(self):
"""Provides an instance of GerritProject for the given Gerrit client configuration.
:return: An instance of GerritProjectQueryDescriptor.
:rtype: pGerrit.queryDescriptor.GerritProjectQueryDescriptor
Usage::
gerrit_client = GerritClient(...)
projects = gerrit_client.project.query(...)
project = gerrit_client.project("test")
"""
from pGerrit.queryDescriptor import GerritProjectQueryDescriptor
return GerritProjectQueryDescriptor(self)