summaryrefslogtreecommitdiff
path: root/day7/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'day7/README.md')
-rw-r--r--day7/README.md56
1 files changed, 56 insertions, 0 deletions
diff --git a/day7/README.md b/day7/README.md
new file mode 100644
index 0000000..82f5d5c
--- /dev/null
+++ b/day7/README.md
@@ -0,0 +1,56 @@
+# BrandNewServer Модули
+
+## templater.py
+### `render_template(template_name, **kwargs)`
+Нам постоянно нужно присылать однотипные HTML-странички и для этого пригодится HTML-шаблонизатор,
+который может по небольшому количеству изменяемых параметров вернуть готовую страницу.
+
+## http_handler.py
+### `main(host, port)`
+Запускает сервер по адресу `host:port`. Также тут
+обрабатывается остановка сервера при нажатии `Ctrl+C`
+
+### `log_requests(func)`
+*Используется как декоратор.*
+
+Логирует все запросы, приходящие в функцию `process_request`.
+
+### `get_request(connection)`
+Принимаем запрос от клиента и тут же парсим заголовки. Если в теле
+запроса приходят дополнительные данные, то они тут тоже обрабатываются.
+
+### `process_request(address, method, url, http_ver, headers, query)`
+*Эта функция логируется с помощью функции* `log_func`
+
+Проверяется валидность url, парсятся Cookie-заголовки. Если url валиден,
+то запрос отправляется на обработку в `backend.py`.
+
+### `handle_connection(connection, address)`
+Как только к серверу присоединяется какой-то клиент,
+то это соединение обрабатывается тут. С помощью `get_request`
+принимаются заголовки и отправляются в `process_request`. Ответ
+клиенту, полученный из бекэнда, отправляется тут.
+
+### `get_color()`
+Специфичная для этой программы функция. Возвращает цвет фона, который
+должен быть у каждой возвращаемой страницы.
+
+## utils.py
+Константы для ответов в http запросах.
+
+Функции, необходимые для обработки любых http-запросов.
+* `add_headers(status, html)`: добавляет заголовки к ответной html-странице
+* `validate_url(url)`: проверка url на правильность
+* `parse_cookies(cookies_line)`: парсинг cookies
+* `parse_headers(request_line)`: парсинг заголовков
+* `parse_query(query_line)`: парсинг параметров в теле заголовка
+* `url_decoder(url_line)`: [декодирование url](https://en.wikipedia.org/wiki/Percent-encoding)
+
+## backend.py
+### `route(url_format, methods)`
+*Используется как декоратор.*
+
+Указание при каком url и методах в запросе должна вызываться декорируемая функция.
+При инициализации декоратора надо указать url регулярное выражение и http методы.
+В декорируемую функцию передаются параметры query из тела запроса и сматченные группы
+из регулярного выражения `url_format`.