summaryrefslogtreecommitdiff
path: root/day9/task5/server.py
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2019-07-06 16:54:30 +0400
committerAndrew <saintruler@gmail.com>2019-07-06 16:54:30 +0400
commite746d1e94eeeafc3229b6c1d790394aa73f32102 (patch)
tree8c27551159d3d94a7fd4b699eff339e924cc2a25 /day9/task5/server.py
parent1e6967f8c4f1ef64947d7f2b95268339d78db454 (diff)
WIP: Рендеринг таблицы на стороне клиента.
Diffstat (limited to 'day9/task5/server.py')
-rw-r--r--day9/task5/server.py23
1 files changed, 18 insertions, 5 deletions
diff --git a/day9/task5/server.py b/day9/task5/server.py
index d9fdc78..47e29f9 100644
--- a/day9/task5/server.py
+++ b/day9/task5/server.py
@@ -1,21 +1,31 @@
from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import parse_qs
+from json import dumps
from router import run
from utils import HTTP_STATUS_CODES
class MyHTTPRequestHandler(BaseHTTPRequestHandler):
- def _set_response(self, code):
+ def _set_response(self, code, content_type):
self.send_response(code)
- self.send_header('Content-type', 'text/html')
+ self.send_header('Content-type', content_type)
self.end_headers()
def do_GET(self):
+ try:
+ content_length = int(self.headers['Content-Length'])
+ get_data = parse_qs(self.rfile.read(content_length).decode('utf-8'))
+ except TypeError:
+ get_data = {}
+
+ for key in get_data:
+ get_data[key] = get_data[key][0]
+
self.finalize_request(run({
'url': self.path,
'method': 'GET',
- 'query': {}
+ 'query': get_data
}))
def do_POST(self):
@@ -33,10 +43,13 @@ class MyHTTPRequestHandler(BaseHTTPRequestHandler):
def finalize_request(self, response):
if isinstance(response, int):
- self._set_response(response)
+ self._set_response(response, 'text/html')
response = f'<center><h1>ERROR {response} {HTTP_STATUS_CODES[response].upper()}</h1></center>'
+ elif isinstance(response, (dict, list, tuple)):
+ self._set_response(200, 'application/json')
+ response = dumps(response)
else:
- self._set_response(200)
+ self._set_response(200, 'text/html')
self.wfile.write(response.encode('utf-8'))