diff options
Diffstat (limited to 'day7/README.md')
| -rw-r--r-- | day7/README.md | 56 |
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`. |