idemintsev / file-storage-aiohttp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

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

Python ^3.11 aiohttp = "3.8"

Upload:

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

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

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

Delete:

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

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

Download:

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

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

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

docker compose up

Или:

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

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

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

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

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

Описание ендпоинтов

http://localhost:8080/api/doc#/

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

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

About


Languages

Language:Python 99.6%Language:Procfile 0.4%