Zephyr - это пет проект, представляющий и себя файловое хранилище для различных типов файлов.
Zephyr является асинхронным HTTP-сервером, обрабатывающем поступающию запросы с помощью библиотеки FastAPI. Весь код написан в асинхронном стиле. Используется асинхронный драйвер для БД - asyncpg. Файлы хранятся облачном хранилище Yandex S3 Objects Storage.
Список эндпоинтов
-
Статус активности связанных сервисов.
Подробнее
Request
GET /ping
Получить информацию по доступности сторонних сервисов (Postgresql, S3)
Response
{ "database": 1.27, "yandex s3": 1.89 }
-
Регистрация пользователя.
Подробнее
Request
POST /users/register
{ "login": "foo", "password": "bar" }
Регистрация нового пользователя. Запрос принимает на вход логин и пароль для создания новой учетной записи.
-
Авторизация пользователя.
Подробнее
Request
POST /users/login
{ "login": "foo", "password": "bar" }
Запрос принимает на вход логин и пароль учетной записи и возвращает авторизационный токен. Далее все запросы проверяют наличие токена в заголовках -
Authorization: Bearer <token>
-
Информация о загруженных файлах.
Подробнее
GET storage/
Вернуть информацию о ранее загруженных файлах. Доступно только авторизованному пользователю.
Response
{ "account_id": "AH4f99T0taONIb-OurWxbNQ6ywGRopQngc", "files": [ { "id": "a19ad56c-d8c6-4376-b9bb-ea82f7f5a853", "name": "notes.txt", "created_ad": "2020-09-11T17:22:05Z", "path": "/homework/test-fodler/notes.txt", "size": 8512, "is_downloadable": true }, ... { "id": "113c7ab9-2300-41c7-9519-91ecbc527de1", "name": "tree-picture.png", "created_ad": "2019-06-19T13:05:21Z", "path": "/homework/work-folder/environment/tree-picture.png", "size": 1945, "is_downloadable": true } ] }
-
Загрузить файл в хранилище.
Подробнее
POST /storage/upload
Метод загрузки файла в хранилище. Доступно только авторизованному пользователю. Для загрузки заполняется полный путь до файла, в который будет загружен/переписан загружаемый файл. Если нужные директории не существуют, то они должны быть созданы автоматически. Так же есть возможность указать только путь до директории. В этом случае имя создаваемого файла будет создано в соответствии с передаваемым именем файла.
Request
{ "path": <full-path-to-file>||<path-to-folder>, }
Response
{ "id": "a19ad56c-d8c6-4376-b9bb-ea82f7f5a853", "name": "notes.txt", "created_ad": "2020-09-11T17:22:05Z", "path": "/homework/test-fodler/notes.txt", "size": 8512, "is_downloadable": true }
-
Скачать загруженный файл.
Подробнее
Request
GET /storage/download
Скачивание ранее загруженного файла. Доступно только авторизованному пользователю.
Path parameters
/?path=<path-to-file>||<file-meta-id>
Возможность скачивания есть как по переданному пути до файла, так и по идентификатору.
- PostgreSQL 15.2
- FastAPI
- Pydantic
- SQLAlchemy
- Alembic
- Pytest
- Docker
- Yandex S3 object storage