91e5f5dac4dae3c8ec4a9ad6057d66731a4ddc14
Some checks failed
Deploy on push / deploy (push) Failing after 5s
### 🔐 Улучшенная аутентификация для микросервисов #### ✨ Новые возможности - **Универсальная аутентификация**: Добавлена функция `authenticate_request()` для всех handlers - **Множественные источники токенов**: Поддержка Bearer, X-Session-Token, Cookie - **Redis сессии**: Интеграция с Redis для проверки активных сессий - **Безопасная валидация**: Функция `secure_token_validation()` с проверкой TTL и обновлением активности - **Извлечение токенов**: Универсальная функция `extract_token_from_request()` для всех типов запросов #### 🧪 Тестирование - **14 новых тестов**: Полное покрытие новой логики аутентификации - **Производительность**: Тесты производительности (< 1ms на операцию) - **Безопасность**: Тесты защиты от подозрительных токенов - **Граничные случаи**: Тестирование истекших токенов, неверных форматов - **Интеграция**: Тесты с мокированным Redis #### ♻️ Рефакторинг (DRY & YAGNI) - **Устранение дублирования**: Объединена логика аутентификации из upload.rs и user.rs - **Удаление устаревшего кода**: Убраны `extract_user_id_from_token`, `validate_token`, `get_user_by_token` - **Очистка констант**: Удалены неиспользуемые `MAX_TOKEN_LENGTH`, `MIN_TOKEN_LENGTH` - **Упрощение**: Заменена `extract_and_validate_token` на `authenticate_request` #### ��️ Архитектурные улучшения - **Библиотечная цель**: Добавлена `lib.rs` для тестирования модулей - **Модульность**: Четкое разделение ответственности между модулями - **Единообразие**: Все handlers теперь используют одинаковую логику аутентификации #### 📋 Совместимость - **Обратная совместимость**: Все существующие API endpoints работают без изменений - **Graceful fallback**: Работа без Redis (JWT-only режим) - **Множественные форматы**: Поддержка различных способов передачи токенов
Quoter 🚀
Simple file upload proxy with quotas. Upload to S3, thumbnails via Vercel.
Focus: Upload + Storage. Thumbnails managed by Vercel Edge API for better performance.
What it does
- 📤 Upload files to S3/Storj with user quotas
- 🔐 JWT authentication with session management
- 📦 File serving with caching and optimization
- 🌐 CORS support for web apps
🚀 Quick Start
# Setup
cargo build
cp .env.example .env # Configure environment
cargo run
# Test
curl http://localhost:8080/ # Health check
🔧 API
| Method | Endpoint | Description |
|---|---|---|
GET |
/ |
Health check or user info (need auth token) |
POST |
/ |
Upload file (need auth token) |
GET |
/{filename} |
Get file or thumbnail |
Upload file
curl -X POST http://localhost:8080/ \
-H "Authorization: Bearer your-token" \
-F "file=@image.jpg"
Get thumbnail
# Legacy thumbnails (fallback only)
curl http://localhost:8080/image_300.jpg
# 💡 Recommended: Use Vercel Image API
https://yoursite.com/_next/image?url=https://files.dscrs.site/image.jpg&w=300&q=75
🏗️ Architecture & Setup
Simple 3-tier architecture:
- Upload: Quoter (auth + quotas + S3 storage)
- Download: Vercel Edge API (thumbnails + optimization)
- Storage: S3/Storj (files) + Redis (quotas/cache)
Upload: Client → Quoter → S3/Storj
Download: Client → Vercel → Quoter (fallback)
💋 Simplified approach: Quoter handles uploads, Vercel handles thumbnails.
📋 Environment Setup
# Required
REDIS_URL=redis://localhost:6379
STORJ_ACCESS_KEY=your-key
STORJ_SECRET_KEY=your-secret
JWT_SECRET=your-secret
# Optional
PORT=8080
RUST_LOG=info
🧪 Testing
cargo test # 36 tests passing
./scripts/test-coverage.sh # Coverage report
📚 Documentation
docs/configuration.md- Environment setupdocs/architecture.md- Technical detailsdocs/vercel-og-integration.md- Vercel integration
For detailed setup and deployment instructions, see the docs folder.
Languages
Rust
98.6%
Dockerfile
1.4%