mercurial/httppeer.py
changeset 37553 6b08cf6b900f
parent 37552 8b8a845c85fc
child 37554 301a1d2e8016
equal deleted inserted replaced
37552:8b8a845c85fc 37553:6b08cf6b900f
   618     finally:
   618     finally:
   619         resp.close()
   619         resp.close()
   620 
   620 
   621     return respurl, set(rawcaps.split())
   621     return respurl, set(rawcaps.split())
   622 
   622 
   623 def makepeer(ui, path, requestbuilder=urlreq.request):
   623 def makepeer(ui, path, opener=None, requestbuilder=urlreq.request):
   624     """Construct an appropriate HTTP peer instance.
   624     """Construct an appropriate HTTP peer instance.
       
   625 
       
   626     ``opener`` is an ``url.opener`` that should be used to establish
       
   627     connections, perform HTTP requests.
   625 
   628 
   626     ``requestbuilder`` is the type used for constructing HTTP requests.
   629     ``requestbuilder`` is the type used for constructing HTTP requests.
   627     It exists as an argument so extensions can override the default.
   630     It exists as an argument so extensions can override the default.
   628     """
   631     """
   629     u = util.url(path)
   632     u = util.url(path)
   633 
   636 
   634     # urllib cannot handle URLs with embedded user or passwd.
   637     # urllib cannot handle URLs with embedded user or passwd.
   635     url, authinfo = u.authinfo()
   638     url, authinfo = u.authinfo()
   636     ui.debug('using %s\n' % url)
   639     ui.debug('using %s\n' % url)
   637 
   640 
   638     opener = urlmod.opener(ui, authinfo)
   641     opener = opener or urlmod.opener(ui, authinfo)
   639 
   642 
   640     respurl, caps = performhandshake(ui, url, opener, requestbuilder)
   643     respurl, caps = performhandshake(ui, url, opener, requestbuilder)
   641 
   644 
   642     return httppeer(ui, path, respurl, opener, requestbuilder, caps)
   645     return httppeer(ui, path, respurl, opener, requestbuilder, caps)
   643 
   646