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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import posixpath
  5. __all__ = [
  6.     'FileWrapper',
  7.     'guess_scheme',
  8.     'application_uri',
  9.     'request_uri',
  10.     'shift_path_info',
  11.     'setup_testing_defaults']
  12.  
  13. class FileWrapper:
  14.     
  15.     def __init__(self, filelike, blksize = 8192):
  16.         self.filelike = filelike
  17.         self.blksize = blksize
  18.         if hasattr(filelike, 'close'):
  19.             self.close = filelike.close
  20.         
  21.  
  22.     
  23.     def __getitem__(self, key):
  24.         data = self.filelike.read(self.blksize)
  25.         if data:
  26.             return data
  27.         raise IndexError
  28.  
  29.     
  30.     def __iter__(self):
  31.         return self
  32.  
  33.     
  34.     def next(self):
  35.         data = self.filelike.read(self.blksize)
  36.         if data:
  37.             return data
  38.         raise StopIteration
  39.  
  40.  
  41.  
  42. def guess_scheme(environ):
  43.     if environ.get('HTTPS') in ('yes', 'on', '1'):
  44.         return 'https'
  45.     return 'http'
  46.  
  47.  
  48. def application_uri(environ):
  49.     url = environ['wsgi.url_scheme'] + '://'
  50.     quote = quote
  51.     import urllib
  52.     if environ.get('HTTP_HOST'):
  53.         url += environ['HTTP_HOST']
  54.     else:
  55.         url += environ['SERVER_NAME']
  56.         if environ['wsgi.url_scheme'] == 'https':
  57.             if environ['SERVER_PORT'] != '443':
  58.                 url += ':' + environ['SERVER_PORT']
  59.             
  60.         elif environ['SERVER_PORT'] != '80':
  61.             url += ':' + environ['SERVER_PORT']
  62.         
  63.     if not environ.get('SCRIPT_NAME'):
  64.         pass
  65.     url += quote('/')
  66.     return url
  67.  
  68.  
  69. def request_uri(environ, include_query = 1):
  70.     url = application_uri(environ)
  71.     quote = quote
  72.     import urllib
  73.     path_info = quote(environ.get('PATH_INFO', ''))
  74.     if not environ.get('SCRIPT_NAME'):
  75.         url += path_info[1:]
  76.     else:
  77.         url += path_info
  78.     if include_query and environ.get('QUERY_STRING'):
  79.         url += '?' + environ['QUERY_STRING']
  80.     
  81.     return url
  82.  
  83.  
  84. def shift_path_info(environ):
  85.     path_info = environ.get('PATH_INFO', '')
  86.     if not path_info:
  87.         return None
  88.     path_parts = path_info.split('/')
  89.     path_parts[1:-1] = _[1]
  90.     name = path_parts[1]
  91.     del path_parts[1]
  92.     script_name = environ.get('SCRIPT_NAME', '')
  93.     script_name = posixpath.normpath(script_name + '/' + name)
  94.     if not name and not script_name.endswith('/'):
  95.         script_name += '/'
  96.     
  97.     environ['SCRIPT_NAME'] = script_name
  98.     environ['PATH_INFO'] = '/'.join(path_parts)
  99.     if name == '.':
  100.         name = None
  101.     
  102.     return name
  103.  
  104.  
  105. def setup_testing_defaults(environ):
  106.     environ.setdefault('SERVER_NAME', '127.0.0.1')
  107.     environ.setdefault('SERVER_PROTOCOL', 'HTTP/1.0')
  108.     environ.setdefault('HTTP_HOST', environ['SERVER_NAME'])
  109.     environ.setdefault('REQUEST_METHOD', 'GET')
  110.     if 'SCRIPT_NAME' not in environ and 'PATH_INFO' not in environ:
  111.         environ.setdefault('SCRIPT_NAME', '')
  112.         environ.setdefault('PATH_INFO', '/')
  113.     
  114.     environ.setdefault('wsgi.version', (1, 0))
  115.     environ.setdefault('wsgi.run_once', 0)
  116.     environ.setdefault('wsgi.multithread', 0)
  117.     environ.setdefault('wsgi.multiprocess', 0)
  118.     StringIO = StringIO
  119.     import StringIO
  120.     environ.setdefault('wsgi.input', StringIO(''))
  121.     environ.setdefault('wsgi.errors', StringIO())
  122.     environ.setdefault('wsgi.url_scheme', guess_scheme(environ))
  123.     if environ['wsgi.url_scheme'] == 'http':
  124.         environ.setdefault('SERVER_PORT', '80')
  125.     elif environ['wsgi.url_scheme'] == 'https':
  126.         environ.setdefault('SERVER_PORT', '443')
  127.     
  128.  
  129. _hoppish = {
  130.     'connection': 1,
  131.     'keep-alive': 1,
  132.     'proxy-authenticate': 1,
  133.     'proxy-authorization': 1,
  134.     'te': 1,
  135.     'trailers': 1,
  136.     'transfer-encoding': 1,
  137.     'upgrade': 1 }.__contains__
  138.  
  139. def is_hop_by_hop(header_name):
  140.     return _hoppish(header_name.lower())
  141.  
  142.