Ticket #1774: proxy_take2.patch

File proxy_take2.patch, 1.8 KB (added by ghazel, 8 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