a44bf3302b70d5968f735a3d3e1078a6bc588e4a
Quoter 🚀
Микросервис для управления файлами с поддержкой квот, миниатюр и интеграции с S3 хранилищами
Quoter - это высокопроизводительный сервис для загрузки и управления файлами, построенный на Rust с использованием Actix Web. Поддерживает автоматическое создание миниатюр, управление квотами пользователей и интеграцию с различными S3-совместимыми хранилищами.
📖 Документация
Подробная документация доступна в папке docs/:
Основные разделы
- 📚 Оглавление - Полная структура документации
- 🔧 API Reference - Документация API
- ⚙️ Конфигурация - Настройка переменных окружения
- 🚀 Развертывание - Инструкции по развертыванию
- 📊 Мониторинг - Логирование и мониторинг
Технические детали
- 🏗️ Архитектура - Техническая архитектура системы
- 🔍 Как это работает - Подробное описание процессов
- 🧪 Тестирование - Полное покрытие тестами (36 тестов)
- 💻 Разработка - Настройка среды разработки
- 🤝 Contributing - Руководство для контрибьюторов
✨ Основные возможности
- 🔐 Аутентификация через 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
🧪 Тестирование
Запуск тестов
# Все тесты
cargo test
# Конкретный тест
cargo test test_health_check
# Тесты с покрытием
./scripts/test-coverage.sh
Статистика тестов
- basic_test.rs: 23 теста (основная функциональность)
- handler_tests.rs: 13 тестов (HTTP endpoints)
- Общее покрытие: 100% основных компонентов
- Статус: Все тесты проходят успешно
📋 Требования
- Rust: 1.70 или выше
- Redis: 6.0 или выше
- S3 совместимое хранилище: Storj, AWS S3 или другое
- API ядра: для аутентификации и получения данных shout
🚀 CI/CD и автоматизация
Статус конвейера
- ✅ Тесты: 36/36 проходят успешно
- ✅ Компиляция: без ошибок
- ✅ Покрытие: 100% основных компонентов
- 🚀 Деплой: автоматический при успешном прохождении тестов
Автоматизация
- Автоматический запуск тестов при каждом коммите
- Проверка качества кода и покрытия
- Автоматический деплой в продакшн
- Полностью автоматизированный конвейер "тесты → деплой"
🔧 Использование
Переменные окружения
Подробная информация о настройке переменных окружения доступна в документации по конфигурации.
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
Languages
Rust
98.6%
Dockerfile
1.4%