# HG changeset patch # User paulb # Date 1075939895 0 # Node ID 02c4482aa0aeef08ea262e5190589123e3be4856 # Parent 980473b735d083b45524c15abc6197a2b1497997 [project @ 2004-02-05 00:11:35 by paulb] Added support for BaseHTTPRequestHandler transactions. Added a commit method for transactions, since some frameworks do not provide support for ad-hoc definition of response information; WebStack must therefore make sure that responses are defined correctly after potentially receiving response information in an order unsuitable for the underlying framework. All adapters should call commit on transactions. diff -r 980473b735d0 -r 02c4482aa0ae WebStack/Adapters/BaseHTTPRequestHandler.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebStack/Adapters/BaseHTTPRequestHandler.py Thu Feb 05 00:11:35 2004 +0000 @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +""" +BaseHTTPRequestHandler adapter. +""" + +import WebStack.BaseHTTPRequestHandler +import BaseHTTPServer + +class HandlerFactory: + + "A factory class creating WebStack dispatcher objects." + + def __init__(self, resource): + + "Initialise the root application-specific 'resource'." + + self.webstack_resource = resource + + def __call__(self, request, client_address, server): + + "Act as a factory for the server objects." + + handler = Handler(request, client_address, server, self.webstack_resource) + return handler + +class Handler(BaseHTTPServer.BaseHTTPRequestHandler): + + "A class dispatching requests to WebStack resources." + + def __init__(self, request, client_address, server, resource): + + "Initialise the root application-specific 'resource'." + + self.webstack_resource = resource + BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, request, client_address, server) + + def handle(self): + + "Dispatch the request to the root application-specific resource." + + # NOTE: Overriding and trimming back the method's functionality. + + self.raw_requestline = self.rfile.readline() + if not self.parse_request(): # An error code has been sent, just exit + return + + trans = WebStack.BaseHTTPRequestHandler.Transaction(self) + self.webstack_resource.respond(trans) + trans.commit() + +# vim: tabstop=4 expandtab shiftwidth=4 diff -r 980473b735d0 -r 02c4482aa0ae WebStack/Adapters/ModPython.py --- a/WebStack/Adapters/ModPython.py Thu Feb 05 00:10:59 2004 +0000 +++ b/WebStack/Adapters/ModPython.py Thu Feb 05 00:11:35 2004 +0000 @@ -21,6 +21,7 @@ try: resource.respond(trans) + trans.commit() return apache.OK except: diff -r 980473b735d0 -r 02c4482aa0ae WebStack/Adapters/Twisted.py --- a/WebStack/Adapters/Twisted.py Thu Feb 05 00:10:59 2004 +0000 +++ b/WebStack/Adapters/Twisted.py Thu Feb 05 00:11:35 2004 +0000 @@ -29,6 +29,7 @@ trans = WebStack.Twisted.Transaction(request) self.webstack_resource.respond(trans) + trans.commit() request.finish() return twisted.web.server.NOT_DONE_YET diff -r 980473b735d0 -r 02c4482aa0ae WebStack/Adapters/Webware.py --- a/WebStack/Adapters/Webware.py Thu Feb 05 00:10:59 2004 +0000 +++ b/WebStack/Adapters/Webware.py Thu Feb 05 00:11:35 2004 +0000 @@ -77,5 +77,6 @@ new_trans = WebStack.Webware.Transaction(trans) self.webstack_resource.respond(new_trans) + new_trans.commit() # vim: tabstop=4 expandtab shiftwidth=4