quoter/README.md

48 lines
5.2 KiB
Markdown
Raw Permalink Normal View History

2024-08-30 18:06:41 +00:00
# Квотер
2023-10-03 13:29:31 +00:00
2024-08-30 18:05:51 +00:00
Управляет квотами на загрузку файлов и их размещением в S3-хранилище. Поддерживает создание миниатюр для изображений и управляет квотами на использование дискового пространства для каждого пользователя с использованием Redis.
2023-10-03 13:29:31 +00:00
2024-08-30 18:06:41 +00:00
## Основные функции
- Миниатюры: Автоматическое создание миниатюр для изображений.
- S3/STORJ интеграция: Загрузка файлов в через `aws-sdk-s3` и возврат публичных URL-адресов.
- Управление квотами: Ограничение объема загружаемых данных для каждого пользователя с использованием Redis.
- Отслеживание файлов: Хранение информации о загруженных файлах в Redis для управления квотами.
2025-06-02 19:20:37 +00:00
- CORS поддержка: Встроенная поддержка кросс-доменных запросов на уровне приложения для безопасного взаимодействия с веб-интерфейсами.
2024-08-30 18:06:41 +00:00
2023-10-03 13:29:31 +00:00
### Как это работает
2024-08-30 18:05:51 +00:00
1. **Аутентификация**:
- Клиент отправляет файл на сервер с заголовком `Authorization`, содержащим токен. Сервер проверяет наличие и валидность токена, определяя пользователя.
2023-10-19 14:43:00 +00:00
2024-08-30 18:05:51 +00:00
2. **Загрузка файлов**:
- Сервер обрабатывает все загружаемые файлы. Если файл является изображением, создается его миниатюра. И миниатюра, и оригинальное изображение загружаются в S3. Для остальных файлов выполняется простая загрузка в S3 без создания миниатюр.
2023-10-19 14:43:00 +00:00
2024-08-30 18:05:51 +00:00
3. **Создание миниатюр**:
- Для всех загружаемых изображений сервер автоматически создает миниатюры размером 320x320 пикселей. Миниатюры сохраняются как отдельные файлы в том же S3 bucket, что и оригинальные изображения.
2023-10-16 14:44:19 +00:00
2024-08-30 18:05:51 +00:00
4. **Определение MIME-типа и расширения файла**:
- MIME-тип и расширение файла определяются автоматически на основе имени файла и его содержимого с использованием библиотеки `mime_guess`.
2023-10-19 14:43:00 +00:00
2024-08-30 18:05:51 +00:00
5. **Загрузка файлов в S3**:
- Все файлы, включая миниатюры и оригиналы изображений, загружаются в указанный S3 bucket. Сформированные URL-адреса файлов возвращаются клиенту.
2023-10-19 14:43:00 +00:00
2024-08-30 18:05:51 +00:00
6. **Управление квотами**:
- Для каждого пользователя устанавливается квота на загрузку данных, которая составляет 1 ГБ в неделю. Перед загрузкой каждого нового файла проверяется, не превысит ли его размер текущую квоту пользователя. Если квота будет превышена, загрузка файла будет отклонена. После успешной загрузки файл и его размер регистрируются в Redis, и квота пользователя обновляется.
2023-10-19 14:43:00 +00:00
2024-08-30 18:05:51 +00:00
7. **Сохранение информации о загруженных файлах в Redis**:
- Имя каждого загруженного файла сохраняется в Redis для отслеживания загруженных пользователем файлов. Это позволяет учитывать квоты и управлять пространством, занимаемым файлами.
2023-10-16 14:44:19 +00:00
2024-10-23 17:06:34 +00:00
8. **Оверлей для shout**:
- При загрузке файла, если он является изображением, и в запросе присутствует параметр `s=<shout_id>`, то к файлу будет добавлен оверлей с данными shout.
2024-10-02 15:13:12 +00:00
## Использование
Нужно задать следующие переменные среды:
- `REDIS_URL`: URL для подключения к Redis. Используется для управления квотами и хранения информации о загружаемых файлах.
- `CDN_DOMAIN`: Домен CDN для генерации публичных URL-адресов загруженных файлов.
2024-10-23 17:06:34 +00:00
- `AUTH_URL`: URL для подключения к сервису аутентификации.
- `CORE_URL`: URL для подключения к сервису core.
2024-10-02 15:13:12 +00:00
- `STORJ_ACCESS_KEY`, `STORJ_SECRET_KEY`, `AWS_ACCESS_KEY`, `AWS_SECRET_KEY`