Untone 91e5f5dac4
Some checks failed
Deploy on push / deploy (push) Failing after 5s
[0.6.5] - 2025-09-21
### 🔐 Улучшенная аутентификация для микросервисов

####  Новые возможности
- **Универсальная аутентификация**: Добавлена функция `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 режим)
- **Множественные форматы**: Поддержка различных способов передачи токенов
2025-09-22 01:15:35 +03:00
2025-09-02 09:09:34 +03:00
2025-08-12 15:59:51 +03:00
2025-09-22 01:15:35 +03:00
2025-09-03 10:21:17 +03:00
2025-09-22 01:15:35 +03:00
2025-09-22 01:15:35 +03:00
2025-09-01 22:52:33 +03:00
2025-08-12 15:59:51 +03:00
2025-09-22 01:15:35 +03:00
2025-09-22 01:15:35 +03:00
2025-09-22 01:15:35 +03:00
2025-09-02 14:00:54 +03:00
2025-08-02 00:18:09 +03:00
2025-09-02 14:00:54 +03:00

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

For detailed setup and deployment instructions, see the docs folder.

Description
quota guarded uploader and thumbs generator for progressive image load
Readme MIT 1.2 MiB
Languages
Rust 98.6%
Dockerfile 1.4%