1 #!/usr/bin/env python 2 3 """ 4 Java Servlet adapter. 5 """ 6 7 from WebStack import JavaServlet 8 9 class Dispatcher: 10 11 "A servlet helper class dispatching requests to WebStack resources." 12 13 def __init__(self, resource, authenticator=None): 14 15 """ 16 Initialise the root application-specific 'resource' and optional 17 'authenticator'. 18 """ 19 20 self.webstack_resource = resource 21 self.webstack_authenticator = authenticator 22 23 def service(self, request, response): 24 25 """ 26 Handle the 'request' and 'response' presented by the servlet. 27 """ 28 29 trans = WebStack.JavaServlet.Transaction(request, response) 30 if self.webstack_authenticator is None or self.webstack_authenticator.authenticate(trans): 31 self.webstack_resource.respond(trans) 32 else: 33 trans.set_response_code(401) # Unauthorized 34 trans.set_header_value("WWW-Authenticate", '%s realm="%s"' % ( 35 self.webstack_authenticator.get_auth_type(), self.webstack_authenticator.get_realm())) 36 37 trans.commit() 38 39 # vim: tabstop=4 expandtab shiftwidth=4