Python requests handles proxying, use it also during bugzilla detection
phase. Don't bother with cookies at this point.
---
bugzilla/__init__.py | 3 ++-
bugzilla/base.py | 15 ++++++++-------
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/bugzilla/__init__.py b/bugzilla/__init__.py
index e6fdeef03566..95bf53875c1e 100644
--- a/bugzilla/__init__.py
+++ b/bugzilla/__init__.py
@@ -26,6 +26,7 @@ log = getLogger("bugzilla")
from bugzilla.base import BugzillaBase as _BugzillaBase
from bugzilla.base import BugzillaError
+from bugzilla.base import RequestsTransport
from bugzilla.bugzilla3 import Bugzilla3, Bugzilla32, Bugzilla34, Bugzilla36
from bugzilla.bugzilla4 import Bugzilla4, Bugzilla42, Bugzilla44
from bugzilla.rhbugzilla import RHBugzilla, RHBugzilla3, RHBugzilla4
@@ -39,7 +40,7 @@ class NovellBugzilla(Bugzilla34):
def getBugzillaClassForURL(url):
url = Bugzilla3.fix_url(url)
log.debug("Detecting subclass for %s", url)
- s = ServerProxy(url)
+ s = ServerProxy(url, RequestsTransport(url))
rhbz = False
bzversion = ''
c = None
diff --git a/bugzilla/base.py b/bugzilla/base.py
index bb7b9405bf1c..4553e1c3cdc7 100644
--- a/bugzilla/base.py
+++ b/bugzilla/base.py
@@ -108,7 +108,7 @@ def _build_cookiejar(cookiefile):
class RequestsTransport(Transport):
user_agent = 'Python/Bugzilla'
- def __init__(self, url, cookiejar,
+ def __init__(self, url, cookiejar=None,
sslverify=True, sslcafile=None, debug=0):
# pylint: disable=W0231
# pylint does not handle multiple import of Transport well
@@ -128,7 +128,7 @@ class RequestsTransport(Transport):
self.request_defaults = {
'cert': sslcafile if self.use_https else None,
- 'cookies': cookiejar,
+ 'cookies': cookiejar if cookiejar else None,
'verify': sslverify,
'headers': {
'Content-Type': 'text/xml',
@@ -157,12 +157,13 @@ class RequestsTransport(Transport):
response.encoding = 'UTF-8'
# update/set any cookies
- for cookie in response.cookies:
- self._cookiejar.set_cookie(cookie)
+ if self._cookiejar is not None:
+ for cookie in response.cookies:
+ self._cookiejar.set_cookie(cookie)
- if self._cookiejar.filename is not None:
- # Save is required only if we have a filename
- self._cookiejar.save()
+ if self._cookiejar.filename is not None:
+ # Save is required only if we have a filename
+ self._cookiejar.save()
response.raise_for_status()
return self.parse_response(response)
--
1.7.9.5