quoter/README.md
Untone 1394f2225f
Some checks failed
deploy / deploy (push) Failing after 4s
readme-patch
2024-08-30 21:06:41 +03:00

4.5 KiB
Raw Blame History

Квотер

Управляет квотами на загрузку файлов и их размещением в S3-хранилище. Поддерживает создание миниатюр для изображений и управляет квотами на использование дискового пространства для каждого пользователя с использованием Redis.

ENV

  • REDIS_URL: URL для подключения к Redis. Используется для управления квотами и хранения информации о загружаемых файлах.
  • S3_BUCKET: Имя S3 bucket, используемого для хранения загруженных файлов.
  • CDN_DOMAIN: Домен CDN для генерации публичных URL-адресов загруженных файлов.

Основные функции

  • Миниатюры: Автоматическое создание миниатюр для изображений.
  • S3/STORJ интеграция: Загрузка файлов в через aws-sdk-s3 и возврат публичных URL-адресов.
  • Управление квотами: Ограничение объема загружаемых данных для каждого пользователя с использованием Redis.
  • Отслеживание файлов: Хранение информации о загруженных файлах в Redis для управления квотами.

Как это работает

  1. Аутентификация:

    • Клиент отправляет файл на сервер с заголовком Authorization, содержащим токен. Сервер проверяет наличие и валидность токена, определяя пользователя.
  2. Загрузка файлов:

    • Сервер обрабатывает все загружаемые файлы. Если файл является изображением, создается его миниатюра. И миниатюра, и оригинальное изображение загружаются в S3. Для остальных файлов выполняется простая загрузка в S3 без создания миниатюр.
  3. Создание миниатюр:

    • Для всех загружаемых изображений сервер автоматически создает миниатюры размером 320x320 пикселей. Миниатюры сохраняются как отдельные файлы в том же S3 bucket, что и оригинальные изображения.
  4. Определение MIME-типа и расширения файла:

    • MIME-тип и расширение файла определяются автоматически на основе имени файла и его содержимого с использованием библиотеки mime_guess.
  5. Загрузка файлов в S3:

    • Все файлы, включая миниатюры и оригиналы изображений, загружаются в указанный S3 bucket. Сформированные URL-адреса файлов возвращаются клиенту.
  6. Управление квотами:

    • Для каждого пользователя устанавливается квота на загрузку данных, которая составляет 1 ГБ в неделю. Перед загрузкой каждого нового файла проверяется, не превысит ли его размер текущую квоту пользователя. Если квота будет превышена, загрузка файла будет отклонена. После успешной загрузки файл и его размер регистрируются в Redis, и квота пользователя обновляется.
  7. Сохранение информации о загруженных файлах в Redis:

    • Имя каждого загруженного файла сохраняется в Redis для отслеживания загруженных пользователем файлов. Это позволяет учитывать квоты и управлять пространством, занимаемым файлами.