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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import warnings
  5. import _auth
  6. import _gzip
  7. import _opener
  8. import _response
  9. import _sockettimeout
  10. import _urllib2
  11.  
  12. class UserAgentBase(_opener.OpenerDirector):
  13.     handler_classes = {
  14.         'http': _urllib2.HTTPHandler,
  15.         'ftp': _urllib2.FTPHandler,
  16.         'file': _urllib2.FileHandler,
  17.         '_unknown': _urllib2.UnknownHandler,
  18.         '_http_error': _urllib2.HTTPErrorProcessor,
  19.         '_http_request_upgrade': _urllib2.HTTPRequestUpgradeProcessor,
  20.         '_http_default_error': _urllib2.HTTPDefaultErrorHandler,
  21.         '_basicauth': _urllib2.HTTPBasicAuthHandler,
  22.         '_digestauth': _urllib2.HTTPDigestAuthHandler,
  23.         '_redirect': _urllib2.HTTPRedirectHandler,
  24.         '_cookies': _urllib2.HTTPCookieProcessor,
  25.         '_refresh': _urllib2.HTTPRefreshProcessor,
  26.         '_equiv': _urllib2.HTTPEquivProcessor,
  27.         '_proxy': _urllib2.ProxyHandler,
  28.         '_proxy_basicauth': _urllib2.ProxyBasicAuthHandler,
  29.         '_proxy_digestauth': _urllib2.ProxyDigestAuthHandler,
  30.         '_robots': _urllib2.HTTPRobotRulesProcessor,
  31.         '_gzip': _gzip.HTTPGzipProcessor,
  32.         '_debug_redirect': _urllib2.HTTPRedirectDebugProcessor,
  33.         '_debug_response_body': _urllib2.HTTPResponseDebugProcessor }
  34.     default_schemes = [
  35.         'http',
  36.         'ftp',
  37.         'file']
  38.     default_others = [
  39.         '_unknown',
  40.         '_http_error',
  41.         '_http_request_upgrade',
  42.         '_http_default_error']
  43.     default_features = [
  44.         '_redirect',
  45.         '_cookies',
  46.         '_refresh',
  47.         '_equiv',
  48.         '_basicauth',
  49.         '_digestauth',
  50.         '_proxy',
  51.         '_proxy_basicauth',
  52.         '_proxy_digestauth',
  53.         '_robots']
  54.     if hasattr(_urllib2, 'HTTPSHandler'):
  55.         handler_classes['https'] = _urllib2.HTTPSHandler
  56.         default_schemes.append('https')
  57.     
  58.     
  59.     def __init__(self):
  60.         _opener.OpenerDirector.__init__(self)
  61.         ua_handlers = self._ua_handlers = { }
  62.         for scheme in self.default_schemes + self.default_others + self.default_features:
  63.             klass = self.handler_classes[scheme]
  64.             ua_handlers[scheme] = klass()
  65.         
  66.         for handler in ua_handlers.itervalues():
  67.             self.add_handler(handler)
  68.         
  69.         if '_refresh' in ua_handlers:
  70.             self.set_handle_refresh(True)
  71.         
  72.         if '_equiv' in ua_handlers:
  73.             self.set_handle_equiv(True)
  74.         
  75.         pm = None
  76.         ppm = None
  77.         if '_basicauth' in ua_handlers or '_digestauth' in ua_handlers:
  78.             pm = _urllib2.HTTPPasswordMgrWithDefaultRealm()
  79.         
  80.         if '_proxy_basicauth' in ua_handlers or '_proxy_digestauth' in ua_handlers:
  81.             ppm = _auth.HTTPProxyPasswordMgr()
  82.         
  83.         self.set_password_manager(pm)
  84.         self.set_proxy_password_manager(ppm)
  85.         if 'https' in ua_handlers:
  86.             cm = _urllib2.HTTPSClientCertMgr()
  87.             self.set_client_cert_manager(cm)
  88.         
  89.  
  90.     
  91.     def close(self):
  92.         _opener.OpenerDirector.close(self)
  93.         self._ua_handlers = None
  94.  
  95.     
  96.     def set_handled_schemes(self, schemes):
  97.         want = { }
  98.         for scheme in schemes:
  99.             if scheme.startswith('_'):
  100.                 raise ValueError("not a scheme '%s'" % scheme)
  101.             scheme.startswith('_')
  102.             if scheme not in self.handler_classes:
  103.                 raise ValueError("unknown scheme '%s'")
  104.             scheme not in self.handler_classes
  105.             want[scheme] = None
  106.         
  107.         for scheme, oldhandler in self._ua_handlers.items():
  108.             if scheme.startswith('_'):
  109.                 continue
  110.             
  111.             if scheme not in want:
  112.                 self._replace_handler(scheme, None)
  113.                 continue
  114.             del want[scheme]
  115.         
  116.         for scheme in want.keys():
  117.             self._set_handler(scheme, True)
  118.         
  119.  
  120.     
  121.     def set_cookiejar(self, cookiejar):
  122.         self._set_handler('_cookies', obj = cookiejar)
  123.  
  124.     
  125.     def set_proxies(self, proxies):
  126.         self._set_handler('_proxy', obj = proxies)
  127.  
  128.     
  129.     def add_password(self, url, user, password, realm = None):
  130.         self._password_manager.add_password(realm, url, user, password)
  131.  
  132.     
  133.     def add_proxy_password(self, user, password, hostport = None, realm = None):
  134.         self._proxy_password_manager.add_password(realm, hostport, user, password)
  135.  
  136.     
  137.     def add_client_certificate(self, url, key_file, cert_file):
  138.         self._client_cert_manager.add_key_cert(url, key_file, cert_file)
  139.  
  140.     
  141.     def set_password_manager(self, password_manager):
  142.         self._password_manager = password_manager
  143.         self._set_handler('_basicauth', obj = password_manager)
  144.         self._set_handler('_digestauth', obj = password_manager)
  145.  
  146.     
  147.     def set_proxy_password_manager(self, password_manager):
  148.         self._proxy_password_manager = password_manager
  149.         self._set_handler('_proxy_basicauth', obj = password_manager)
  150.         self._set_handler('_proxy_digestauth', obj = password_manager)
  151.  
  152.     
  153.     def set_client_cert_manager(self, cert_manager):
  154.         self._client_cert_manager = cert_manager
  155.         handler = self._ua_handlers['https']
  156.         handler.client_cert_manager = cert_manager
  157.  
  158.     
  159.     def set_handle_robots(self, handle):
  160.         self._set_handler('_robots', handle)
  161.  
  162.     
  163.     def set_handle_redirect(self, handle):
  164.         self._set_handler('_redirect', handle)
  165.  
  166.     
  167.     def set_handle_refresh(self, handle, max_time = None, honor_time = True):
  168.         self._set_handler('_refresh', handle, constructor_kwds = {
  169.             'max_time': max_time,
  170.             'honor_time': honor_time })
  171.  
  172.     
  173.     def set_handle_equiv(self, handle, head_parser_class = None):
  174.         if head_parser_class is not None:
  175.             constructor_kwds = {
  176.                 'head_parser_class': head_parser_class }
  177.         else:
  178.             constructor_kwds = { }
  179.         self._set_handler('_equiv', handle, constructor_kwds = constructor_kwds)
  180.  
  181.     
  182.     def set_handle_gzip(self, handle):
  183.         if handle:
  184.             warnings.warn('gzip transfer encoding is experimental!', stacklevel = 2)
  185.         
  186.         self._set_handler('_gzip', handle)
  187.  
  188.     
  189.     def set_debug_redirects(self, handle):
  190.         self._set_handler('_debug_redirect', handle)
  191.  
  192.     
  193.     def set_debug_responses(self, handle):
  194.         self._set_handler('_debug_response_body', handle)
  195.  
  196.     
  197.     def set_debug_http(self, handle):
  198.         level = int(bool(handle))
  199.         for scheme in ('http', 'https'):
  200.             h = self._ua_handlers.get(scheme)
  201.             if h is not None:
  202.                 h.set_http_debuglevel(level)
  203.                 continue
  204.         
  205.  
  206.     
  207.     def _set_handler(self, name, handle = None, obj = None, constructor_args = (), constructor_kwds = { }):
  208.         if handle is None:
  209.             handle = obj is not None
  210.         
  211.         if handle:
  212.             handler_class = self.handler_classes[name]
  213.             if obj is not None:
  214.                 newhandler = handler_class(obj)
  215.             else:
  216.                 newhandler = handler_class(*constructor_args, **constructor_kwds)
  217.         else:
  218.             newhandler = None
  219.         self._replace_handler(name, newhandler)
  220.  
  221.     
  222.     def _replace_handler(self, name, newhandler = None):
  223.         if name is not None:
  224.             handler = self._ua_handlers.get(name)
  225.             if handler:
  226.                 
  227.                 try:
  228.                     self.handlers.remove(handler)
  229.                 except ValueError:
  230.                     pass
  231.                 except:
  232.                     None<EXCEPTION MATCH>ValueError
  233.                 
  234.  
  235.             None<EXCEPTION MATCH>ValueError
  236.         
  237.         if newhandler is not None:
  238.             self.add_handler(newhandler)
  239.             self._ua_handlers[name] = newhandler
  240.         
  241.  
  242.  
  243.  
  244. class UserAgent(UserAgentBase):
  245.     
  246.     def __init__(self):
  247.         UserAgentBase.__init__(self)
  248.         self._seekable = False
  249.  
  250.     
  251.     def set_seekable_responses(self, handle):
  252.         self._seekable = bool(handle)
  253.  
  254.     
  255.     def open(self, fullurl, data = None, timeout = _sockettimeout._GLOBAL_DEFAULT_TIMEOUT):
  256.         if self._seekable:
  257.             
  258.             def bound_open(fullurl, data = None, timeout = (_sockettimeout._GLOBAL_DEFAULT_TIMEOUT,)):
  259.                 return UserAgentBase.open(self, fullurl, data, timeout)
  260.  
  261.             response = _opener.wrapped_open(bound_open, _response.seek_wrapped_response, fullurl, data, timeout)
  262.         else:
  263.             response = UserAgentBase.open(self, fullurl, data)
  264.         return response
  265.  
  266.  
  267.