Beispiel #1
0
 def gotHeaders(self, headers):
     if self.requestedPartial:
         contentRange = headers.get("content-range", None)
         if not contentRange:
             self.requestedPartial = 0
             return
         start, end, realLength = http.parseContentRange(contentRange[0])
         if start != self.requestedPartial:
             self.requestedPartial = 0
Beispiel #2
0
 def gotHeaders(self, headers):
     if self.requestedPartial:
         contentRange = headers.get("content-range", None)
         if not contentRange:
             # server doesn't support partial requests, oh well
             self.requestedPartial = 0 
             return
         start, end, realLength = http.parseContentRange(contentRange[0])
         if start != self.requestedPartial:
             # server is acting wierdly
             self.requestedPartial = 0
Beispiel #3
0
 def gotHeaders(self, headers):
     if self.requestedPartial:
         contentRange = headers.get("content-range", None)
         if not contentRange:
             # server doesn't support partial requests, oh well
             self.requestedPartial = 0
             return
         start, end, realLength = http.parseContentRange(contentRange[0])
         if start != self.requestedPartial:
             # server is acting wierdly
             self.requestedPartial = 0
Beispiel #4
0
 def gotHeaders(self, headers):
     HTTPClientFactory.gotHeaders(self, headers)
     if self.requestedPartial:
         contentRange = headers.get("content-range", None)
         if not contentRange:
             # server doesn't support partial requests, oh well
             self.requestedPartial = 0
             return
         # TODO: end and realLength are not being used anywhere.. maybe use dump variable: _ or use parseContentRange()[0:2]
         start, end, realLength = http.parseContentRange(contentRange[0])
         if start != self.requestedPartial:
             # server is acting wierdly
             self.requestedPartial = 0
Beispiel #5
0
    def __init__(self, headers):
        self.expires = None
        self.mtime = None
        self.length = 0
        self.start = 0
        self.size = 0
        self.mimeType = None

        headers = InsensitiveDict(headers)

        encoding = headers.get("Transfer-Encoding", None)
        if encoding == 'chunked':
            raise errors.FlumotionError("Chunked transfer not supported")

        expires = headers.get("Expires", None)
        if expires is not None:
            try:
                self.expires = http.stringToDatetime(expires)
            except:
                self.expires = 0

        lastmod = headers.get("Last-Modified", None)
        if lastmod is not None:
            self.mtime = http.stringToDatetime(lastmod)

        range = headers.get("Content-Range", None)
        length = headers.get("Content-Length", None)
        if range is not None:
            start, end, total = http.parseContentRange(range)
            self.start = start
            self.length = total
            if length is not None:
                self.size = int(length)
            else:
                self.size = end - start
        elif length is not None:
            self.length = int(length)
            self.size = int(length)
        else:
            raise errors.FlumotionError("Can't get length/size from headers",
                                        headers)

        ctype = headers.get("Content-Type", None)
        if ctype is not None:
            self.mimeType, _pdict = cgi.parse_header(ctype)
Beispiel #6
0
    def __init__(self, headers):
        self.expires = None
        self.mtime = None
        self.length = 0
        self.start = 0
        self.size = 0
        self.mimeType = None

        headers = InsensitiveDict(headers)

        encoding = headers.get("Transfer-Encoding", None)
        if encoding == 'chunked':
            raise errors.FlumotionError("Chunked transfer not supported")

        expires = headers.get("Expires", None)
        if expires is not None:
            try:
                self.expires = http.stringToDatetime(expires)
            except:
                self.expires = 0

        lastmod = headers.get("Last-Modified", None)
        if lastmod is not None:
            self.mtime = http.stringToDatetime(lastmod)

        range = headers.get("Content-Range", None)
        length = headers.get("Content-Length", None)
        if range is not None:
            start, end, total = http.parseContentRange(range)
            self.start = start
            self.length = total
            if length is not None:
                self.size = int(length)
            else:
                self.size = end - start
        elif length is not None:
            self.length = int(length)
            self.size = int(length)
        else:
            raise errors.FlumotionError("Can't get length/size from headers",
                                        headers)

        ctype = headers.get("Content-Type", None)
        if ctype is not None:
            self.mimeType, _pdict = cgi.parse_header(ctype)
Beispiel #7
0
 def onHeaders(self, downloader, headers):
     contentLength = 0
     if downloader.requestedPartial:
         contentRange = headers.get('content-range', None)
         start, end, contentLength = http.parseContentRange(contentRange[0])
         self.bytes_start = start - 1
         self.bytes_downloaded = self.bytes_start
     else:
         contentLength = headers.get('content-length', [0])[0]
     self.download.size = float(contentLength)
     contentType = headers.get('content-type', None)
     if contentType:
         self.download.mime_type = unicode(contentType[0])
     contentDisposition = headers.get('content-disposition', None)
     if contentDisposition and contentDisposition[0].startswith('attachment'):
         newName = contentDisposition[0].split('=')[1]
         if newName[0] == '"' and newName[len(newName)-1] == '"':
             newName = newName[1:len(newName)-1]
         if downloader.renameFile(newName):
             self.download.filename = unicode(newName)