Mercurial > moin > 1.9
view MoinMoin/request/request_wsgi.py @ 3071:806cf4814612
get server/request package in sync with 1.6 branch (as of changeset 2559:eedcb9cfefdb)
author | Thomas Waldmann <tw AT waldmann-edv DOT de> |
---|---|
date | Fri, 22 Feb 2008 21:59:32 +0100 |
parents | bdd5df911941 |
children | 4f6d7765e1f5 |
line wrap: on
line source
# -*- coding: iso-8859-1 -*- """ MoinMoin - WSGI Request Implementation for std. WSGI web servers. @copyright: 2001-2003 Juergen Hermann <jh@web.de>, 2003-2006 MoinMoin:ThomasWaldmann @license: GNU GPL, see COPYING for details. """ import cgi, StringIO from MoinMoin.request import RequestBase class Request(RequestBase): """ specialized on WSGI requests """ def __init__(self, env): try: self.env = env self.hasContentType = False self.stdin = env['wsgi.input'] self.stdout = StringIO.StringIO() # used by MoinMoin.server.server_wsgi: self.status = '200 OK' self.headers = [] self._setup_vars_from_std_env(env) RequestBase.__init__(self, {}) except Exception, err: self.fail(err) def setup_args(self): # TODO: does this include query_string args for POST requests? # see also how CGI works now form = cgi.FieldStorage(fp=self.stdin, environ=self.env, keep_blank_values=1) return RequestBase._setup_args_from_cgi_form(self, form) def read(self, n=None): if n is None: return self.stdin.read() else: return self.stdin.read(n) def write(self, *data): self.stdout.write(self.encode(data)) def _emit_http_headers(self, headers): """ private method to send out preprocessed list of HTTP headers """ st_header, other_headers = headers[0], headers[1:] self.status = st_header.split(':', 1)[1].lstrip() for header in other_headers: key, value = header.split(':', 1) value = value.lstrip() self.headers.append((key, value)) def flush(self): pass def output(self): # called by MoinMoin.server.server_wsgi return self.stdout.getvalue()