1*602Szelenkov@nginx.comimport atexit
2*602Szelenkov@nginx.com
3*602Szelenkov@nginx.comclass application:
4*602Szelenkov@nginx.com    def __init__(self, environ, start_response):
5*602Szelenkov@nginx.com        self.environ = environ
6*602Szelenkov@nginx.com        self.start = start_response
7*602Szelenkov@nginx.com
8*602Szelenkov@nginx.com    def __iter__(self):
9*602Szelenkov@nginx.com        atexit.register(self._atexit)
10*602Szelenkov@nginx.com
11*602Szelenkov@nginx.com        content_length = int(self.environ.get('CONTENT_LENGTH', 0))
12*602Szelenkov@nginx.com        body = bytes(self.environ['wsgi.input'].read(content_length))
13*602Szelenkov@nginx.com
14*602Szelenkov@nginx.com        self.start('200', [
15*602Szelenkov@nginx.com            ('Content-Type', self.environ.get('CONTENT_TYPE')),
16*602Szelenkov@nginx.com            ('Content-Length', str(len(body)))
17*602Szelenkov@nginx.com        ])
18*602Szelenkov@nginx.com        yield body
19*602Szelenkov@nginx.com
20*602Szelenkov@nginx.com    def _atexit(self):
21*602Szelenkov@nginx.com        self.start('200', [
22*602Szelenkov@nginx.com            ('Content-Length', '0')
23*602Szelenkov@nginx.com        ])
24