forked from pahaz/Example-of-MVC-pattern-on-pure-Python-2015
-
Notifications
You must be signed in to change notification settings - Fork 0
/
wsgi.py
48 lines (37 loc) · 1.5 KB
/
wsgi.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
import wsgiref.validate
from conteroller import index
from router import Router
from utils import parse_http_x_www_form_urlencoded_post_data, \
parse_http_get_data, parse_http_headers, \
parse_http_content_type, parse_http_uri
DEBUG = True
STATIC_URL = '/static/'
STATIC_ROOT = 'data'
router = Router()
router.register_controller('/', index)
@wsgiref.validate.validator
def application(environ, start_response):
# https://www.python.org/dev/peps/pep-3333/#environ-variables
REQUEST_METHOD = environ['REQUEST_METHOD']
CONTENT_TYPE, CONTENT_TYPE_KWARGS = parse_http_content_type(environ)
SERVER_PROTOCOL = environ['SERVER_PROTOCOL']
HEADERS = parse_http_headers(environ)
URI_PATH = environ['PATH_INFO']
URI_QUERY = environ['QUERY_STRING']
URI = parse_http_uri(environ)
POST = parse_http_x_www_form_urlencoded_post_data(environ)
GET = parse_http_get_data(environ)
headers = [('Content-type', 'text/html; charset=utf-8')]
controller_callback = router.resolve(URI_PATH)
status, body = controller_callback(REQUEST_METHOD, GET, POST, headers)
if URI_PATH.startswith(STATIC_URL):
print('STATIC FILE DETECTED!')
if DEBUG:
print("{REQUEST_METHOD} {URI_PATH}?{URI_QUERY} {SERVER_PROTOCOL}\n"
"CONTENT_TYPE: {CONTENT_TYPE}; {CONTENT_TYPE_KWARGS}\n"
"POST: {POST}\n"
"GET: {GET}\n"
":HEADERS:\n{HEADERS}\n"
.format(**locals()))
start_response(status, headers)
return [body]