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
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
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
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)
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)