Алгоритм:
- На сервере хранится список ключевых слов, которым соответствует несколько URL.
- Клиент посылает ключевое слово на сервер.
- Сервер передаёт клиенту список URL.
- Клиент выбирает один URL из списка и через сервер в многопоточном режиме скачивает контент.
- Клиент сохраняет контент в LocalStorage с возможностью чтения оффлайн.
Сервер должен:
- Хранить соответствие ключевых слов с URLами.
- При скачивании контента передавать статус загрузки: размер, кол-во запущенных потоков, прогресс загрузки.
- Кол-во потоков и скорость на поток должно быть ограничено посредством конфига.
Клиент должен:
- Иметь поле для ввода ключевого слова.
- Иметь возможность показа списка URL с возможностью выбора пользователем нужного.
- Показывать статус загрузки: размер, кол-во запущенных потоков, прогресс загрузки.
- Иметь возможность показа списка загруженного контента с возможностью выбора пользователем нужного.
- Показать выбранный загруженный контент.
!!! Не забудьте отследить все возможные ошибки, обработав их и представив пользователю в удобном виде.
Требования:
- JavaScript/Node.js
- Можно использовать клиентский и серверный фреймворк по своему выбору.
- Код задания предоставить в виде репозитория на github
- В README.md должна содержаться инструкция по запуску
!!! Результат должен быть доступен публично (чтобы не обязательно было разворачивать локально).