/task

Primary LanguagePython

"Хранилище файлов с доступом по http"

Сервис предоставляет HTTP API для загрузки (upload), скачивания (download) и удаления файлов. Авторизация - Basick Auth. Регистрация пользователей в сервисе не предусморена.

Python ^3.10 Flask 2.2.3

Upload:

1 авторизованный пользователь загружает файл;

2 файл сохранятеся на диск в следующую структуру каталогов: store/ab/abcdef12345... где "abcdef12345..." - имя файла, совпадающее с его хэшем. /ab/ - подкаталог, состоящий из первых двух символов хэша файла. Алгоритм хэширования - sha256.

3 возвращает хэш загруженного файла;

Delete:

1 авторизованный пользователь передает хэш файла, который необходимо удалить;

2 если по хешу файл удалось найти в локальном хранилище, и файл принадлежит пользователю, то файл пользователя удаляется;

Download:

1 любой пользователь передаёт параметр - хэш файла;

2 если по хешу файл удалось найти в локальном хранилище, то возвращаем файл;

Запуск проекта

1 Активировать виртуальное окружение

2 Установить Poetry

3 Для установки зависимостей выполнить команду poetry install

4 Создать в корневой папке проекта файл .env и скопировать в него переменные окруджения из deploy/dev.env

5 Запустить сервер командой honcho start rest

Endpoints

1 Загрузка файла на сервер endpoint /files method post response filename (string)

2 Скачивание файла с сервера endpoint /files/{filename} method get response file (bytes)

2 Удаление файла на сервере endpoint /files/{filename} method delete response deleted filename (string)

Взаимодействие с сервисом

Тестировать ендпоинты можно через Postman.

Также для быстрой проверки в проект добавлен клиент (file_sender_client/client.py). Клиент может загружать файл на сервер/скачивать файл/удалять файл.

Все команды выполняются из корневой директории проекта 1 Для загрузки файла на сервер выполните команду poetry run upload_file. Загруженный файл появится в папке store.

2 Для скачивания файла с сервера выполните команду poetry run download_file. Файл появится в папке file_sender_client.

3 Для удаления файла с севрера выполните команду poetry run delete_file.