blob: 2779a845206b713a3d4333d753eb08da4d395082 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
class application:
def __init__(self, environ, start_response):
self.environ = environ
self.start = start_response
self.next = self.__next__
def __iter__(self):
self.__i = 0
self._skip_level = int(self.environ.get('HTTP_X_SKIP', 0))
self._not_skip_close = int(
self.environ.get('HTTP_X_NOT_SKIP_CLOSE', 0)
)
self._is_chunked = self.environ.get('HTTP_X_CHUNKED')
headers = [(('Content-Length', '10'))]
if self._is_chunked is not None:
headers = []
if self._skip_level < 1:
raise Exception('first exception')
write = self.start('200', headers)
if self._skip_level < 2:
raise Exception('second exception')
write(b'XXXXX')
if self._skip_level < 3:
raise Exception('third exception')
return self
def __next__(self):
if self._skip_level < 4:
raise Exception('next exception')
self.__i += 1
if self.__i > 2:
raise StopIteration
return b'X'
def close(self):
if self._not_skip_close == 1:
raise Exception('close exception')
|