diff --git a/mercurial/byterange.py b/mercurial/byterange.py --- a/mercurial/byterange.py +++ b/mercurial/byterange.py @@ -28,6 +28,7 @@ import stat from . import ( + urllibcompat, util, ) @@ -214,8 +215,8 @@ server would. """ def open_local_file(self, req): - host = req.get_host() - file = req.get_selector() + host = urllibcompat.gethost(req) + file = urllibcompat.getselector(req) localfile = urlreq.url2pathname(file) stats = os.stat(localfile) size = stats[stat.ST_SIZE] @@ -252,7 +253,7 @@ class FTPRangeHandler(urlreq.ftphandler): def ftp_open(self, req): - host = req.get_host() + host = urllibcompat.gethost(req) if not host: raise IOError('ftp error', 'no host given') host, port = splitport(host) diff --git a/mercurial/httpconnection.py b/mercurial/httpconnection.py --- a/mercurial/httpconnection.py +++ b/mercurial/httpconnection.py @@ -18,6 +18,7 @@ from . import ( httpclient, sslutil, + urllibcompat, util, ) @@ -174,13 +175,14 @@ # object. On Python 2.6.5, it's stored in the _tunnel_host # attribute which has no accessor. tunhost = getattr(req, '_tunnel_host', None) - host = req.get_host() + host = urllibcompat.gethost(req) if tunhost: proxyhost = host host = tunhost elif req.has_proxy(): - proxyhost = req.get_host() - host = req.get_selector().split('://', 1)[1].split('/', 1)[0] + proxyhost = urllibcompat.gethost(req) + host = urllibcompat.getselector( + req).split('://', 1)[1].split('/', 1)[0] else: proxyhost = None @@ -219,7 +221,7 @@ headers = dict( (name.title(), val) for name, val in headers.items()) try: - path = req.get_selector() + path = urllibcompat.getselector(req) if '://' in path: path = path.split('://', 1)[1].split('/', 1)[1] if path[0] != '/': @@ -233,7 +235,7 @@ # object initialized properly. r.recv = r.read - resp = urlreq.addinfourl(r, r.headers, req.get_full_url()) + resp = urlreq.addinfourl(r, r.headers, urllibcompat.getfullurl(req)) resp.code = r.status resp.msg = r.reason return resp @@ -242,7 +244,7 @@ # target, and then allows full URIs in the request path, which it # then observes and treats as a signal to do proxying instead. def http_open(self, req): - if req.get_full_url().startswith('https'): + if urllibcompat.getfullurl(req).startswith('https'): return self.https_open(req) def makehttpcon(*args, **kwargs): k2 = dict(kwargs) @@ -251,9 +253,9 @@ return self.do_open(makehttpcon, req, False) def https_open(self, req): - # req.get_full_url() does not contain credentials and we may + # urllibcompat.getfullurl(req) does not contain credentials and we may # need them to match the certificates. - url = req.get_full_url() + url = urllibcompat.getfullurl(req) user, password = self.pwmgr.find_stored_password(url) res = readauthforuri(self.ui, url, user) if res: diff --git a/mercurial/keepalive.py b/mercurial/keepalive.py --- a/mercurial/keepalive.py +++ b/mercurial/keepalive.py @@ -93,6 +93,7 @@ from .i18n import _ from . import ( pycompat, + urllibcompat, util, ) @@ -206,7 +207,7 @@ return self.do_open(HTTPConnection, req) def do_open(self, http_class, req): - host = req.get_host() + host = urllibcompat.gethost(req) if not host: raise urlerr.urlerror('no host given') @@ -317,10 +318,11 @@ if n in headers: skipheaders['skip_' + n.replace('-', '_')] = 1 try: - if req.has_data(): - data = req.get_data() + if urllibcompat.hasdata(req): + data = urllibcompat.getdata(req) h.putrequest( - req.get_method(), req.get_selector(), **skipheaders) + req.get_method(), urllibcompat.getselector(req), + **skipheaders) if 'content-type' not in headers: h.putheader('Content-type', 'application/x-www-form-urlencoded') @@ -328,13 +330,14 @@ h.putheader('Content-length', '%d' % len(data)) else: h.putrequest( - req.get_method(), req.get_selector(), **skipheaders) + req.get_method(), urllibcompat.getselector(req), + **skipheaders) except socket.error as err: raise urlerr.urlerror(err) for k, v in headers.items(): h.putheader(k, v) h.endheaders() - if req.has_data(): + if urllibcompat.hasdata(req): h.send(data) class HTTPHandler(KeepAliveHandler, urlreq.httphandler): diff --git a/mercurial/url.py b/mercurial/url.py --- a/mercurial/url.py +++ b/mercurial/url.py @@ -21,6 +21,7 @@ keepalive, pycompat, sslutil, + urllibcompat, util, ) @@ -119,7 +120,7 @@ self.ui = ui def proxy_open(self, req, proxy, type_): - host = req.get_host().split(':')[0] + host = urllibcompat.gethost(req).split(':')[0] for e in self.no_list: if host == e: return None @@ -166,10 +167,10 @@ tunnel_host = 'https://' + tunnel_host new_tunnel = True else: - tunnel_host = req.get_selector() + tunnel_host = urllibcompat.getselector(req) new_tunnel = False - if new_tunnel or tunnel_host == req.get_full_url(): # has proxy + if new_tunnel or tunnel_host == urllibcompat.getfullurl(req): # has proxy u = util.url(tunnel_host) if new_tunnel or u.scheme == 'https': # only use CONNECT for HTTPS h.realhostport = ':'.join([u.host, (u.port or '443')]) @@ -320,9 +321,9 @@ return keepalive.KeepAliveHandler._start_transaction(self, h, req) def https_open(self, req): - # req.get_full_url() does not contain credentials and we may - # need them to match the certificates. - url = req.get_full_url() + # urllibcompat.getfullurl() does not contain credentials + # and we may need them to match the certificates. + url = urllibcompat.getfullurl(req) user, password = self.pwmgr.find_stored_password(url) res = httpconnectionmod.readauthforuri(self.ui, url, user) if res: @@ -406,7 +407,8 @@ self, auth_header, host, req, headers) def retry_http_basic_auth(self, host, req, realm): - user, pw = self.passwd.find_user_password(realm, req.get_full_url()) + user, pw = self.passwd.find_user_password( + realm, urllibcompat.getfullurl(req)) if pw is not None: raw = "%s:%s" % (user, pw) auth = 'Basic %s' % base64.b64encode(raw).strip()