Untone 4a174bd2cb
Some checks failed
Deploy / deploy (push) Has been skipped
CI / test (push) Failing after 1m23s
CI / lint (push) Failing after 55s
0.3.0-less-expect
2025-08-12 14:48:59 +03:00
2025-08-12 14:13:35 +03:00
ci
2025-08-02 00:39:05 +03:00
ci
2025-08-02 00:39:05 +03:00
2025-08-12 14:13:35 +03:00
2025-08-12 14:48:59 +03:00
2025-08-12 14:48:59 +03:00
2025-08-12 14:48:59 +03:00
2025-08-12 14:48:59 +03:00
2025-08-12 14:48:59 +03:00
2025-08-02 00:18:09 +03:00
2025-08-02 00:18:09 +03:00
ci
2025-08-02 00:39:05 +03:00

Quoter 🚀

Rust Actix Web Redis S3 Compatible Tests License

Микросервис для управления файлами с поддержкой квот, миниатюр и интеграции с S3 хранилищами

Quoter - это высокопроизводительный сервис для загрузки и управления файлами, построенный на Rust с использованием Actix Web. Поддерживает автоматическое создание миниатюр, управление квотами пользователей и интеграцию с различными S3-совместимыми хранилищами.

📖 Документация

Подробная документация доступна в папке docs/:

Основные разделы

Технические детали

Основные возможности

  • 🔐 Аутентификация через JWT токены
  • 📁 Загрузка файлов в S3/Storj с автоматическим определением MIME-типов
  • 🖼️ Автоматические миниатюры для изображений (10, 40, 110, 300, 600, 800, 1400px)
  • 💾 Управление квотами пользователей (5 ГБ по умолчанию)
  • 🎨 Оверлеи для shout с автоматическим наложением текста
  • 🔄 CORS поддержка для веб-приложений
  • Высокая производительность благодаря асинхронной архитектуре
  • 📊 Мониторинг и логирование всех операций

🏗️ Архитектура

Quoter построен на современном стеке технологий:

  • Backend: Rust + Actix Web
  • База данных: Redis для квот и кэширования
  • Хранилище: S3-совместимые сервисы (Storj, AWS S3)
  • Аутентификация: JWT токены через GraphQL API
  • Обработка изображений: image-rs + imageproc

📋 Требования

  • Rust: 1.70 или выше
  • Redis: 6.0 или выше
  • S3 совместимое хранилище: Storj, AWS S3 или другое
  • API ядра: для аутентификации и получения данных shout

🔧 Использование

Переменные окружения

Подробная информация о настройке переменных окружения доступна в документации по конфигурации.

API Endpoints

Основные API endpoints:

Метод Endpoint Описание
GET / Проверка состояния сервера
POST / Загрузка файла
GET /{filename} Получение файла/миниатюры
GET /quota Информация о квоте пользователя
POST /quota/increase Увеличение квоты
POST /quota/set Установка квоты

Подробная документация API доступна в API Reference.

Примеры использования

Загрузка файла

curl -X POST http://localhost:8080/ \
  -H "Authorization: Bearer your-token" \
  -F "file=@image.jpg"

Получение миниатюры

curl http://localhost:8080/image_300.jpg

Увеличение квоты

curl -X POST http://localhost:8080/quota/increase \
  -H "Authorization: Bearer your-token" \
  -H "Content-Type: application/json" \
  -d '{"user_id": "user123", "additional_bytes": 1073741824}'

🧪 Разработка

cargo build # сборка
cargo test # запуск тестов
cargo clippy # Проверка кода
cargo fmt # Форматирование
RUST_LOG=debug cargo run # подробные логи

Метрики

Основные метрики для мониторинга:

  • Количество загруженных файлов
  • Использование квот пользователями
  • Время ответа API
  • Ошибки аутентификации
  • Ошибки загрузки в S3
Description
quota guarded uploader and thumbs generator for progressive image load
Readme MIT 1.2 MiB
Languages
Rust 98.6%
Dockerfile 1.4%