summaryrefslogtreecommitdiff
path: root/day7/http_handler.py
diff options
context:
space:
mode:
Diffstat (limited to 'day7/http_handler.py')
-rw-r--r--day7/http_handler.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/day7/http_handler.py b/day7/http_handler.py
index 8344d7f..67769d4 100644
--- a/day7/http_handler.py
+++ b/day7/http_handler.py
@@ -17,6 +17,12 @@ logging.basicConfig(filename=db.get_config_entry('log_path'), level=logging.INFO
def log_requests(func):
+ """
+ *Используется как декоратор.*
+
+ Логирует в файл все запросы, приходящие в функцию `process_request`.
+ """
+
def wrapper(address, request, *args, **kwargs):
response = func(*args, **kwargs)
status = response.split('\n').pop(0).split()[1]
@@ -61,6 +67,13 @@ def log_requests(func):
@log_requests
def process_request(address, request: dict):
+ """
+ *Эта функция логируется с помощью функции* `log_func`
+
+ Проверяется валидность url. Если url валиден,
+ то запрос отправляется на обработку в `backend.py`.
+ """
+
if validate_url(request['url']):
response = run(request)
else:
@@ -70,6 +83,11 @@ def process_request(address, request: dict):
def parse_request(connection):
+ """
+ Принимаем запрос от клиента и тут же парсим заголовки. Если в теле
+ запроса приходят дополнительные данные, то они тоже обрабатываются.
+ """
+
buffer = b''
request = b''
while not request.endswith(b'\r\n\r\n'):
@@ -119,6 +137,13 @@ def get_color():
def handle_connection(connection, address):
+ """
+ Как только к серверу присоединяется какой-то клиент,
+ то это соединение обрабатывается тут. С помощью `get_request`
+ принимаются заголовки и отправляются в `process_request`. Ответ
+ клиенту, полученный из бекэнда, отправляется тут.
+ """
+
try:
request = parse_request(connection)
except ValueError as e:
@@ -137,6 +162,14 @@ def handle_connection(connection, address):
def main():
+ """
+ *Точка входа в программу.*
+
+ Адрес хоста берется из базы данных конфигурации.
+ Запускает сервер по адресу `host:port`. Также тут
+ обрабатывается остановка сервера при нажатии `Ctrl+C`
+ """
+
host = db.get_config_entry('host')
port = db.get_config_entry('port')