Author: fw
Date: 2009-10-11 10:23:56 +0000 (Sun, 11 Oct 2009)
New Revision: 12983
Modified:
lib/python/web_support.py
Log:
lib/python/web_support.py (WebServiceBase): new class
Factored common functionality into base class, in preparation of
alternative invocation methods.
Modified: lib/python/web_support.py
==================================================================---
lib/python/web_support.py 2009-10-10 23:42:52 UTC (rev 12982)
+++ lib/python/web_support.py 2009-10-11 10:23:56 UTC (rev 12983)
@@ -599,10 +599,9 @@
write("Content-Type: %s\n\n" % self.mimetype)
write(self.contents)
-class WebService(Service):
- def __init__(self, socket_name):
- Service.__init__(self, socket_name)
- self.__router = PathRouter()
+class WebServiceBase:
+ def __init__(self):
+ self.router = PathRouter()
def register(self, path, method):
"""Requests that method is invoked if path is
encountered.
@@ -616,12 +615,8 @@
The method is expected to return a HTMLResult object.
"""
- self.__router.register(path, method)
+ self.router.register(path, method)
- def __writeError(self, result, code, msg):
- result.write(''Status: %d\nContent-Type:
text/plain\n\n%s\n''
- % (code, msg))
-
def html_dtd(self):
"""Returns the DOCTYPE declaration to be used for HTML
documents.
Can be overridden."""
@@ -654,6 +649,16 @@
"""Invoked by handle prior to calling the registered
handler."""
pass
+class WebService(Service, WebServiceBase):
+ "CGI service implemented using servinvoke"
+ def __init__(self, socket_name):
+ Service.__init__(self, socket_name)
+ WebServiceBase.__init__(self)
+
+ def __writeError(self, result, code, msg):
+ result.write(''Status: %d\nContent-Type:
text/plain\n\n%s\n''
+ % (code, msg))
+
def handle(self, args, environment, data, result):
params = cgi.parse(data, environment)
path = environment.get(''PATH_INFO'',
'''')
@@ -664,7 +669,7 @@
script_name = environment.get(''SCRIPT_NAME'',
'''')
try:
- (method, remaining) = self.__router.get(path)
+ (method, remaining) = self.router.get(path)
except InvalidPath:
self.__writeError(result, 404, "page not found")
return