Мой вариант решения практического задания на Академию Бэкенда Tinkoff Python 2023
Creator: @begenFys
Creator's channel: @begenFys_life
- Установить зависимости из Pipfile(заведомо установить pipenv)
pipenv sync
- Запустить виртуальное окружение
pipenv shell
- Запустить тестовый сервер
./test_server/<server> -s
- Запустить main.py файл, передав url сервера и адрес хаба в hex виде
python main.py <url> <address>
Буду рассказывать по шагам, что я делал.
- Я разобрался с такой кодировкой как base64, понял как работают байты, научился с ними манипулировать в Python.
- Написал отдельный класс UrlCoder, который включает в себя функции необходимые для декодирования и кодирования.
- Написал алгоритм обработки ответов, о котором рассказывается ниже
- Сделал удобную структуру в UrlCoder разных функций кодирования: payload -> packet -> response. Дальше буду говорить о том, как я обрабатывал запросы, а там будем видно, что в каждом отдельном классе отдельно кодировался такой параметр, как cmd body.
- Реализовал несколько вспомогательных функций, которые приводят "вид, к которому мы привыкли" к виду, необходимого для отправки на сервер.
- Понял зачем можно использовать битовые операции, оказалось очень удобно и быстро
- Тут не было чего-то прям сверхъестественного, просто снова поработал с requests
- Прописал полноценный алгоритм, который обрабатывает пакеты в зависимости от их статуса, также формирование новых пакетов
- Понял зачем нужны и научился пользоваться битовыми операторами для обработки маски
- Разбить всё на файлы(из-за задания не могу так сделать)
- Подумать как можно избавиться от повторения запросов и объявления
- Добавить логирование
- Прописать документацию