Skip to content

e4t4g/test_FT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание FamilyTeam на должность Golang-разработчика

Постановка задачи

У вас имеется ZIP-архив (MIME: application/zip), в котором содержится несколько произвольных файлов.

От коллеги вам поступил запрос на написание веб-сервиса, который выводил бы список файлов с определенным расширением в этом ZIP-архиве на веб-страницу.

Для этого необходимо написать программу, которая:

  1. откроет ZIP-архив и получит список содержащихся в нем файлов;
  2. создаст HTTP-сервер на произвольном порту;
  3. при входящем запросе на HTTP-сервер программа должна отобразить список файлов.

Итоговый результат необходимо разместить в репозиторий на GitHub.

Обязательные требования

  1. Golang (версия >= 1.21);
  2. Для HTTP-сервера используется фреймворк Chi: https://github.com/go-chi/chi;
  3. Путь к ZIP-файлу и расширение файлов в ZIP-архиве передаются в качестве параметров командной строки при запуске программы;
  4. Программа должна реагировать на Ctrl+C (сигнал SIGINT для Linux, SIGTERM для Windows). Если у программы не открыто никаких ресурсов, которые следует завершить, то будет достаточно, чтобы при получении Ctrl+C просто выводилось сообщение о том, что программа завершает работу.
  5. При выдаче файла программа должна логировать событие в 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):
image

Примечания

Подразумевается, что в архиве присутствуют только файлы: директорий там нет.

Архив достаточно парсить один раз при запуске программы - в ходе работы программы архив не будет изменяться.

Список можно отображать в любом формате: оформление HTML-страницы приветствуется, но не требуется.

Для обработки ZIP-файла можно использовать встроенный пакет archive/zip.

Можно использовать любые архитектурные решения, главное, чтобы программа соответствовала ТЗ.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages