Ticket #1774: proxy_take2.patch

File proxy_take2.patch, 1.8 KB (added by ghazel, 10 years ago)

client proxy patch

  • twisted\web\client.py

    old new  
    201201
    202202    def __init__(self, url, method='GET', postdata=None, headers=None,
    203203                 agent="Twisted PageGetter", timeout=0, cookies=None,
    204                  followRedirect=1):
     204                 followRedirect=1, proxy=None):
    205205        self.protocol.followRedirect = followRedirect
    206206        self.timeout = timeout
    207207        self.agent = agent
     208        self.proxy = proxy
    208209
    209210        if cookies is None:
    210211            cookies = {}
     
    236237            self.scheme = scheme
    237238            self.host = host
    238239            self.port = port
    239         self.path = path
     240        if self.proxy:
     241            self.path = "%s://%s:%s%s" % (self.scheme, 
     242                                          self.host, 
     243                                          self.port, 
     244                                          path)
     245        else:
     246            self.path = path
    240247
    241248    def buildProtocol(self, addr):
    242249        p = protocol.ClientFactory.buildProtocol(self, addr)
     
    378385    return scheme, host, port, path
    379386
    380387
    381 def getPage(url, contextFactory=None, *args, **kwargs):
     388def getPage(url, contextFactory=None, proxy=None, *args, **kwargs):
    382389    """Download a web page as a string.
    383390
    384391    Download a page. Return a deferred, which will callback with a
     
    387394    See HTTPClientFactory to see what extra args can be passed.
    388395    """
    389396    scheme, host, port, path = _parse(url)
     397    if proxy:
     398        host, port = proxy.split(':')
     399        port = int(port)
     400        kwargs['proxy'] = proxy
    390401    factory = HTTPClientFactory(url, *args, **kwargs)
    391402    if scheme == 'https':
    392403        from twisted.internet import ssl