diff options
| author | 2012-09-18 17:59:50 +0200 | |
|---|---|---|
| committer | 2012-09-18 17:59:50 +0200 | |
| commit | 6130a2377ca6754fee88773097ce220abef1aa47 (patch) | |
| tree | 76bea0d76393100fcf393c164c96d34f286aba7a /module/network/HTTPChunk.py | |
| parent | Added DuckcryptInfo decrypter, smaller fixes (diff) | |
| parent | dropdowns in navbar (diff) | |
| download | pyload-6130a2377ca6754fee88773097ce220abef1aa47.tar.xz | |
merged stable into default
Diffstat (limited to 'module/network/HTTPChunk.py')
| -rw-r--r-- | module/network/HTTPChunk.py | 25 | 
1 files changed, 15 insertions, 10 deletions
| diff --git a/module/network/HTTPChunk.py b/module/network/HTTPChunk.py index b637aef32..d17177ee7 100644 --- a/module/network/HTTPChunk.py +++ b/module/network/HTTPChunk.py @@ -20,10 +20,13 @@ from os import remove, stat, fsync  from os.path import exists  from time import sleep  from re import search -from module.utils import fs_encode +  import codecs  import pycurl +from module.utils import remove_chars +from module.utils.fs import fs_encode +  from HTTPRequest import HTTPRequest  class WrongFormat(Exception): @@ -204,7 +207,7 @@ class HTTPChunk(HTTPRequest):      def writeHeader(self, buf):          self.header += buf -        #@TODO forward headers?, this is possibly unneeeded, when we just parse valid 200 headers +        #@TODO forward headers?, this is possibly unneeded, when we just parse valid 200 headers          # as first chunk, we will parse the headers          if not self.range and self.header.endswith("\r\n\r\n"):              self.parseHeader() @@ -233,8 +236,8 @@ class HTTPChunk(HTTPRequest):              sleep(self.p.bucket.consumed(size))          else:              # Avoid small buffers, increasing sleep time slowly if buffer size gets smaller -            # otherwise reduce sleep time percentual (values are based on tests) -            # So in general cpu time is saved without reducing bandwith too much +            # otherwise reduce sleep time percentile (values are based on tests) +            # So in general cpu time is saved without reducing bandwidth too much              if size < self.lastSize:                  self.sleep += 0.002 @@ -250,17 +253,19 @@ class HTTPChunk(HTTPRequest):      def parseHeader(self): -        """parse data from recieved header""" +        """parse data from received header"""          for orgline in self.decodeResponse(self.header).splitlines():              line = orgline.strip().lower()              if line.startswith("accept-ranges") and "bytes" in line:                  self.p.chunkSupport = True -            if line.startswith("content-disposition") and "filename=" in line: -                name = orgline.partition("filename=")[2] -                name = name.replace('"', "").replace("'", "").replace(";", "").strip() -                self.p.nameDisposition = name -                self.log.debug("Content-Disposition: %s" % name) +            if "content-disposition" in line: + +                m = search("filename(?P<type>=|\*=(?P<enc>.+)'')(?P<name>.*)", line) +                if m: +                    name = remove_chars(m.groupdict()['name'], "\"';").strip() +                    self.p._name = name +                    self.log.debug("Content-Disposition: %s" % name)              if not self.resume and line.startswith("content-length"):                  self.p.size = int(line.split(":")[1]) | 
