reviewboard: adapt HTTP client code to Mercurial 4.4 (
bug 1413628); r?glob
The HTTP peer API was overhauled in Mercurial 4.4. Some attributes
were renamed. Teach the code to look for the new attributes.
This eliminates a test failure in test-push-http.t.
MozReview-Commit-ID: 29DrxAe23n8
--- a/hgext/reviewboard/client.py
+++ b/hgext/reviewboard/client.py
@@ -144,19 +144,30 @@ def dummycontextmanager(*args, **kwargs)
def calljsoncommand(ui, remote, command, data=None, httpcap=None, httpcommand=None):
"""Call a wire protocol command parse the response as JSON."""
if data:
data = json.dumps(data, sort_keys=True, encoding='utf-8')
if (httpcap and httpcommand and httpcap in getreviewcaps(remote) and
isinstance(remote, httppeer.httppeer)):
url = '%s/%s' % (remote._url, httpcommand)
- request = remote.requestbuilder(url, data=data,
- headers={'Content-Type': 'application/json'})
- fh = remote.urlopener.open(request)
+
+ # TRACKING hg44: 4.4 renamed requestbuilder to _requestbuilder and
+ # urlopener to _urlopener.
+ if util.safehasattr(remote, '_requestbuilder'):
+ requestbuilder = remote._requestbuilder
+ opener = remote._urlopener
+ else:
+ requestbuilder = remote.requestbuilder
+ opener = remote.urlopener
+
+ request = requestbuilder(url,
+ data=data,
+ headers={'Content-Type': 'application/json'})
+ fh = opener.open(request)
res = fh.read()
else:
res = remote._call(command, data=data)
return json.loads(res)
def commonrequestdict(ui, bzauth=None):