#!/usr/bin/env python """ This is a simple-minded CGI-based driver for the web API. $Header: /cvsroot/dbagg3/htdocs/api,v 1.5 2004/09/13 14:44:50 deusx Exp $ """ import os, sys from cStringIO import StringIO import cgiconfig from dbagg3.web import ui, Response import jon.cgi as cgi import jon.fcgi as fcgi class FCGIResponse(Response): def __init__(self, **kw): Response.__init__(self, **kw) def _emitHeaders(self): self.stdout.clear_headers() for name in self.headers.keys(): for value in self.headers[name]: self.stdout.add_header(name, value) self.headers_emitted = True class Handler(cgi.Handler): def process(self, req): env = req.environ stdin = StringIO(req.stdin.read()) ui.dispatch(env.get('REQUEST_METHOD', 'GET'), env.get('PATH_INFO','/'), req.params, 'http://%s%s' % (env.get('HTTP_HOST',''), env.get('SCRIPT_NAME', '')), stdin, FCGIResponse(stdout=req)) # Need threading level 0 because of sour interaction with MySQL and SQLObject fcgi.Server({fcgi.FCGI_RESPONDER: Handler}, threading_level=0).run()