Vega strike Python Modules doc  0.5.1
Documentation of the " Modules " folder of Vega strike
 All Data Structures Namespaces Files Functions Variables
FancyURLopener Class Reference
Inheritance diagram for FancyURLopener:
URLopener URLopener

Public Member Functions

def __init__
 
def http_error_default
 
def http_error_302
 
def redirect_internal
 
def http_error_301
 
def http_error_401
 
def retry_http_basic_auth
 
def retry_https_basic_auth
 
def get_user_passwd
 
def prompt_user_passwd
 
- Public Member Functions inherited from URLopener
def __init__
 
def __del__
 
def close
 
def cleanup
 
def addheader
 
def open
 
def open_unknown
 
def open_unknown_proxy
 
def retrieve
 
def open_http
 
def http_error
 
def http_error_default
 
def open_https
 
def open_gopher
 
def open_file
 
def open_local_file
 
def open_ftp
 
def open_data
 

Data Fields

 auth_cache
 
 tries
 
 maxtries
 
- Data Fields inherited from URLopener
 proxies
 
 key_file
 
 cert_file
 
 addheaders
 
 tempcache
 
 ftpcache
 
 type
 

Additional Inherited Members

- Static Public Attributes inherited from URLopener
string version = "Python-urllib/%s"
 

Detailed Description

Derived class with handlers for errors we can handle (perhaps).

Definition at line 532 of file urllib.py.

Constructor & Destructor Documentation

def __init__ (   self,
  args 
)

Definition at line 535 of file urllib.py.

536  def __init__(self, *args):
537  apply(URLopener.__init__, (self,) + args)
538  self.auth_cache = {}
539  self.tries = 0
540  self.maxtries = 10

Member Function Documentation

def get_user_passwd (   self,
  host,
  realm,
  clear_cache = 0 
)

Definition at line 627 of file urllib.py.

References FancyURLopener.auth_cache, and FancyURLopener.prompt_user_passwd().

628  def get_user_passwd(self, host, realm, clear_cache = 0):
629  key = realm + '@' + host.lower()
630  if self.auth_cache.has_key(key):
631  if clear_cache:
632  del self.auth_cache[key]
633  else:
634  return self.auth_cache[key]
635  user, passwd = self.prompt_user_passwd(host, realm)
636  if user or passwd: self.auth_cache[key] = (user, passwd)
637  return user, passwd
def http_error_301 (   self,
  url,
  fp,
  errcode,
  errmsg,
  headers,
  data = None 
)
Error 301 -- also relocated (permanently).

Definition at line 577 of file urllib.py.

References URLopener.http_error_302(), and FancyURLopener.http_error_302().

578  def http_error_301(self, url, fp, errcode, errmsg, headers, data=None):
579  """Error 301 -- also relocated (permanently)."""
580  return self.http_error_302(url, fp, errcode, errmsg, headers, data)
def http_error_302 (   self,
  url,
  fp,
  errcode,
  errmsg,
  headers,
  data = None 
)
Error 302 -- relocated (temporarily).

Definition at line 545 of file urllib.py.

References URLopener.http_error_default(), URLopener.maxtries, FancyURLopener.maxtries, FancyURLopener.redirect_internal(), URLopener.tries, and FancyURLopener.tries.

546  def http_error_302(self, url, fp, errcode, errmsg, headers, data=None):
547  """Error 302 -- relocated (temporarily)."""
548  self.tries += 1
549  if self.maxtries and self.tries >= self.maxtries:
550  if hasattr(self, "http_error_500"):
551  meth = self.http_error_500
552  else:
553  meth = self.http_error_default
554  self.tries = 0
555  return meth(url, fp, 500,
556  "Internal Server Error: Redirect Recursion", headers)
557  result = self.redirect_internal(url, fp, errcode, errmsg, headers,
558  data)
559  self.tries = 0
560  return result
def http_error_401 (   self,
  url,
  fp,
  errcode,
  errmsg,
  headers,
  data = None 
)
Error 401 -- authentication required.
See this URL for a description of the basic authentication scheme:
http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-v10-spec-00.txt

Definition at line 581 of file urllib.py.

References Message.type, URLopener.type, MiniFieldStorage.type, and FieldStorage.type.

582  def http_error_401(self, url, fp, errcode, errmsg, headers, data=None):
583  """Error 401 -- authentication required.
584  See this URL for a description of the basic authentication scheme:
585  http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-v10-spec-00.txt"""
586  if not headers.has_key('www-authenticate'):
587  URLopener.http_error_default(self, url, fp,
588  errcode, errmsg, headers)
589  stuff = headers['www-authenticate']
590  import re
591  match = re.match('[ \t]*([^ \t]+)[ \t]+realm="([^"]*)"', stuff)
592  if not match:
593  URLopener.http_error_default(self, url, fp,
594  errcode, errmsg, headers)
595  scheme, realm = match.groups()
596  if scheme.lower() != 'basic':
597  URLopener.http_error_default(self, url, fp,
598  errcode, errmsg, headers)
599  name = 'retry_' + self.type + '_basic_auth'
600  if data is None:
601  return getattr(self,name)(url, realm)
602  else:
603  return getattr(self,name)(url, realm, data)
def http_error_default (   self,
  url,
  fp,
  errcode,
  errmsg,
  headers 
)
Default error handling -- don't raise an exception.

Definition at line 541 of file urllib.py.

542  def http_error_default(self, url, fp, errcode, errmsg, headers):
543  """Default error handling -- don't raise an exception."""
544  return addinfourl(fp, headers, "http:" + url)
def prompt_user_passwd (   self,
  host,
  realm 
)
Override this in a GUI environment!

Definition at line 638 of file urllib.py.

References getpass.getpass.

639  def prompt_user_passwd(self, host, realm):
640  """Override this in a GUI environment!"""
641  import getpass
642  try:
643  user = raw_input("Enter username for %s at %s: " % (realm,
644  host))
645  passwd = getpass.getpass("Enter password for %s in %s at %s: " %
646  (user, realm, host))
647  return user, passwd
648  except KeyboardInterrupt:
649  print
650  return None, None
651 
652 
653 # Utility functions
def redirect_internal (   self,
  url,
  fp,
  errcode,
  errmsg,
  headers,
  data 
)

Definition at line 561 of file urllib.py.

References urllib.basejoin(), Pattern.open, _posixfile_.open(), URLopener.open(), Template.open(), Telnet.open(), Message.type, URLopener.type, MiniFieldStorage.type, and FieldStorage.type.

562  def redirect_internal(self, url, fp, errcode, errmsg, headers, data):
563  if headers.has_key('location'):
564  newurl = headers['location']
565  elif headers.has_key('uri'):
566  newurl = headers['uri']
567  else:
568  return
569  void = fp.read()
570  fp.close()
571  # In case the server sent a relative URL, join with original:
572  newurl = basejoin(self.type + ":" + url, newurl)
573  if data is None:
574  return self.open(newurl)
575  else:
576  return self.open(newurl, data)
def retry_http_basic_auth (   self,
  url,
  realm,
  data = None 
)

Definition at line 604 of file urllib.py.

References FancyURLopener.get_user_passwd(), Pattern.open, _posixfile_.open(), URLopener.open(), Template.open(), Telnet.open(), urllib.quote(), and urllib.splithost().

605  def retry_http_basic_auth(self, url, realm, data=None):
606  host, selector = splithost(url)
607  i = host.find('@') + 1
608  host = host[i:]
609  user, passwd = self.get_user_passwd(host, realm, i)
610  if not (user or passwd): return None
611  host = quote(user, safe='') + ':' + quote(passwd, safe='') + '@' + host
612  newurl = 'http://' + host + selector
613  if data is None:
614  return self.open(newurl)
615  else:
616  return self.open(newurl, data)
def retry_https_basic_auth (   self,
  url,
  realm,
  data = None 
)

Definition at line 617 of file urllib.py.

References FancyURLopener.get_user_passwd(), URLopener.open_https(), urllib.quote(), and urllib.splithost().

618  def retry_https_basic_auth(self, url, realm, data=None):
619  host, selector = splithost(url)
620  i = host.find('@') + 1
621  host = host[i:]
622  user, passwd = self.get_user_passwd(host, realm, i)
623  if not (user or passwd): return None
624  host = quote(user, safe='') + ':' + quote(passwd, safe='') + '@' + host
625  newurl = '//' + host + selector
626  return self.open_https(newurl, data)

Field Documentation

auth_cache

Definition at line 537 of file urllib.py.

maxtries

Definition at line 539 of file urllib.py.

tries

Definition at line 538 of file urllib.py.


The documentation for this class was generated from the following file: