Ticket #4364 (new defect)

Opened 6 months ago

Support for afterFoundGet in HTTPDownloader

Reported by: zimmer Owned by: jknight
Priority: normal Milestone:
Component: web Keywords: HTTPClientFactory, HTTPDownloader, afterFoundGet, 302 HTTP Redirect,
Cc: Branch:
Author: Launchpad Bug:

Description

In twisted's current version HTTPDownloader http://twistedmatrix.com/trac/browser/trunk/twisted/web/client.py#L353 doesn't support afterFoundGet like HTTPClientFactory http://twistedmatrix.com/trac/browser/trunk/twisted/web/client.py#L220 does. Here is a way to do (patch?) that.

Replace HTTPDownloader's _ _init_ _ with this

class HTTPDownloader(HTTPClientFactory):
    """Download to a file."""

    protocol = HTTPPageDownloader
    value = None

    def __init__(self, url, fileOrName,
                 method='GET', postdata=None, headers=None,
                 agent="Twisted client", supportPartial=0,
                 timeout=0, cookies=None, followRedirect=1,
                 redirectLimit=20, afterFoundGet = False):
        self.requestedPartial = 0
        if isinstance(fileOrName, types.StringTypes):
            self.fileName = fileOrName
            self.file = None
            if supportPartial and os.path.exists(self.fileName):
                fileLength = os.path.getsize(self.fileName)
                if fileLength:
                    self.requestedPartial = fileLength
                    if headers == None:
                        headers = {}
                    headers["range"] = "bytes=%d-" % fileLength
        else:
            self.file = fileOrName
        HTTPClientFactory.__init__(
            self, url, method=method, postdata=postdata, headers=headers,
            agent=agent, timeout=timeout, cookies=cookies,
            followRedirect=followRedirect, redirectLimit=redirectLimit,
            afterFoundGet = afterFoundGet)

This code (above) adds a new argument to the init of HTTPDownloader (afterFoundGet) and then also passes it to the unbound init of HTTPClientFactory.

Note: See TracTickets for help on using tickets.