14
0
Files
python-bugzilla/106-basic-auth.diff

43 lines
1.7 KiB
Diff

---
bugzilla/base.py | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
--- a/bugzilla/base.py
+++ b/bugzilla/base.py
@@ -175,7 +175,8 @@ class Bugzilla(object):
def __init__(self, url=-1, user=None, password=None, cookiefile=-1,
sslverify=True, tokenfile=-1, use_creds=True, api_key=None,
cert=None, configpaths=-1,
- force_rest=False, force_xmlrpc=False, requests_session=None):
+ force_rest=False, force_xmlrpc=False, requests_session=None,
+ basic_auth=False):
"""
:param url: The bugzilla instance URL, which we will connect
to immediately. Most users will want to specify this at
@@ -212,6 +213,7 @@ class Bugzilla(object):
:param requests_session: An optional requests.Session object the
API will use to contact the remote bugzilla instance. This
way the API user can set up whatever auth bits they may need.
+ :param basic_auth: Use headers with HTTP Basic authentication
"""
if url == -1:
raise TypeError("Specify a valid bugzilla url, or pass url=None")
@@ -253,6 +255,7 @@ class Bugzilla(object):
self._setcookiefile(cookiefile)
self._settokenfile(tokenfile)
self._setconfigpath(configpaths)
+ self._basic_auth = basic_auth
if url:
self.connect(url)
@@ -607,6 +610,9 @@ class Bugzilla(object):
if not self.password:
raise ValueError("missing password")
+ if self._basic_auth:
+ self._transport.set_basic_auth(self.user, self.password)
+
payload = {"login": self.user}
if restrict_login:
payload['restrict_login'] = True