-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmiddleware.py
51 lines (38 loc) · 1.66 KB
/
middleware.py
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
48
49
50
51
class Request_Middleware_Manager():
"""Manage middleware request processing interactions
each middleware in Request_Middleware_Manager process request in turn
and return a request object for subsequent middleware or view
"""
def __init__(self):
"""Initialize middleware pipeline list"""
self.middlewares = []
def add_middleware(self, middleware):
"""Append middleware to processing pipeline"""
self.middlewares.append(middleware)
def process(self, request):
"""Process request through all middleware
each middleware is called in turn to process request object
middleware return a request object for subsequent middleware or view
"""
for middleware in self.middlewares:
request = middleware(request)
return request
class Response_Middleware_Manager():
"""Manage middleware response processing interactions
each middleware in Response_Middleware_Manager process response in turn
and return a response object for subsequent middleware
"""
def __init__(self):
"""Initialize middleware pipeline list"""
self.middlewares = []
def add_middleware(self, middleware):
"""Append middleware to processing pipeline"""
self.middlewares.append(middleware)
def process(self, response):
"""Process request through all middleware
each middleware is called in turn to process response object
middleware return a response object for subsequent middleware
"""
for middleware in self.middlewares:
response = middleware(response)
return response