У вас имеется ZIP-архив (MIME: application/zip
), в котором содержится несколько произвольных файлов.
От коллеги вам поступил запрос на написание веб-сервиса, который выводил бы список файлов с определенным расширением в этом ZIP-архиве на веб-страницу.
Для этого необходимо написать программу, которая:
- откроет ZIP-архив и получит список содержащихся в нем файлов;
- создаст HTTP-сервер на произвольном порту;
- при входящем запросе на HTTP-сервер программа должна отобразить список файлов.
Итоговый результат необходимо разместить в репозиторий на GitHub.
- Golang (версия >= 1.21);
- Для HTTP-сервера используется фреймворк Chi: https://github.com/go-chi/chi;
- Путь к ZIP-файлу и расширение файлов в ZIP-архиве передаются в качестве параметров командной строки при запуске программы;
- Программа должна реагировать на Ctrl+C (сигнал SIGINT для Linux, SIGTERM для Windows). Если у программы не открыто никаких ресурсов, которые следует завершить, то будет достаточно, чтобы при получении Ctrl+C просто выводилось сообщение о том, что программа завершает работу.
- При выдаче файла программа должна логировать событие в stdout командной строки. Для логирования можно использовать любой структурированный логгер, например, log/slog (https://pkg.go.dev/log/slog), или zap (https://github.com/uber-go/zap).
Запускаем программу:
./zipview --port 80 --file ./test.zip --ext ".c"
Открываем браузер (http://localhost:80
):
Подразумевается, что в архиве присутствуют только файлы: директорий там нет.
Архив достаточно парсить один раз при запуске программы - в ходе работы программы архив не будет изменяться.
Список можно отображать в любом формате: оформление HTML-страницы приветствуется, но не требуется.
Для обработки ZIP-файла можно использовать встроенный пакет archive/zip
.
Можно использовать любые архитектурные решения, главное, чтобы программа соответствовала ТЗ.