home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1463 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  3.2 KB  |  112 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import cherrypy
  5.  
  6. class MultipartWrapper(object):
  7.     
  8.     def __init__(self, rfile, clen):
  9.         self.rfile = rfile
  10.         self.clen = clen
  11.         self.bytes_read = 0
  12.  
  13.     
  14.     def read(self, size = None):
  15.         if self.clen:
  16.             if self.bytes_read >= self.clen:
  17.                 return ''
  18.             new_bytes_read = self.bytes_read + size
  19.             if new_bytes_read > self.clen:
  20.                 size = self.clen - self.bytes_read
  21.             
  22.         
  23.         data = self.rfile.read(size)
  24.         self.bytes_read += len(data)
  25.         return data
  26.  
  27.     
  28.     def readline(self, size = None):
  29.         if size is not None:
  30.             if self.clen:
  31.                 if self.bytes_read >= self.clen:
  32.                     return ''
  33.                 new_bytes_read = self.bytes_read + size
  34.                 if new_bytes_read > self.clen:
  35.                     size = self.clen - self.bytes_read
  36.                 
  37.             
  38.             data = self.rfile.readline(size)
  39.             self.bytes_read += len(data)
  40.             return data
  41.         res = []
  42.         size = 256
  43.         while True:
  44.             data = self.rfile.readline(size)
  45.             self.bytes_read += len(data)
  46.             res.append(data)
  47.             if len(data) < size or data[-1:] == '\n':
  48.                 return ''.join(res)
  49.             continue
  50.             data[-1:] == '\n'
  51.  
  52.     
  53.     def readlines(self, sizehint = 0):
  54.         total = 0
  55.         lines = []
  56.         line = self.readline()
  57.         while line:
  58.             lines.append(line)
  59.             total += len(line)
  60.             if sizehint < sizehint:
  61.                 pass
  62.             elif sizehint <= total:
  63.                 break
  64.             
  65.             line = self.readline()
  66.             continue
  67.             0
  68.         return lines
  69.  
  70.     
  71.     def close(self):
  72.         self.rfile.close()
  73.  
  74.     
  75.     def __iter__(self):
  76.         return self.rfile
  77.  
  78.     
  79.     def next(self):
  80.         if self.clen:
  81.             if self.bytes_read >= self.clen:
  82.                 return ''
  83.         
  84.         data = self.rfile.next()
  85.         self.bytes_read += len(data)
  86.         return data
  87.  
  88.  
  89.  
  90. def safe_multipart(flash_only = False):
  91.     h = cherrypy.request.headers
  92.     if not h.get('Content-Type', '').startswith('multipart/'):
  93.         return None
  94.     if flash_only and 'Shockwave Flash' not in h.get('User-Agent', ''):
  95.         return None
  96.     clen = h.get('Content-Length', '0')
  97.     
  98.     try:
  99.         clen = int(clen)
  100.     except ValueError:
  101.         'Shockwave Flash' not in h.get('User-Agent', '')
  102.         'Shockwave Flash' not in h.get('User-Agent', '')
  103.         h.get('Content-Type', '').startswith('multipart/')
  104.         return None
  105.  
  106.     cherrypy.request.rfile = MultipartWrapper(cherrypy.request.rfile, clen)
  107.  
  108.  
  109. def init():
  110.     cherrypy.tools.safe_multipart = cherrypy.Tool('before_request_body', safe_multipart)
  111.  
  112.