text: """Global ISAPI request handler.
  
  Written by Phillip Sitbon [phillip@sitbon.net]
  Copyright 2005-2006
  
  %--%%--%
  v1.4 v1-0-3
  2006/06/27 20:55:07
  %--%%--%
  
  All requests go here - after the first successful
  import of this module & Request() function, it
  will not be reloaded for the life of the interpreter.
  
  This default simply attempts to load the file targeted
  by the URL and call its Request() function. Although
  SCRIPT_TRANSLATED is not available in IIS 5.x, it is
  emulated for completeness.
  
  I don't really recommend this method - it's not as
  package/module oriented as the Regex and Advanced
  examples, which can handle arbitrary URLs and pass
  them to preloaded handlers.
  
  See example Isapi.py files in ../Examples, including
  one that makes this version backwards compatible with
  v1.0.0 (in the Compat folder).
  """
  from Http import *
  from md5 import md5
  import imp
  
  Handlers = {}
  
  def Request():
    try:
      # attempt to call an already-loaded request function.
      return Handlers[Env.SCRIPT_NAME]()
    except KeyError:
      # uses the script path's md5 hash to ensure a unique
      # name - not the best way to do it, but it keeps
      # undesired characters out of the name that will
      # mess up the loading.
      Name = '__'+md5(Env.SCRIPT_NAME).hexdigest().upper()
      Handlers[Env.SCRIPT_NAME] = \
        imp.load_source(Name, Env.SCRIPT_TRANSLATED).Request
      return Handlers[Env.SCRIPT_NAME]()
  