This commit is contained in:
11
CHANGELOG.md
11
CHANGELOG.md
@@ -1,5 +1,14 @@
|
||||
## [0.6.10] - 2025-10-04
|
||||
|
||||
### 🧹 Code Quality: Clippy Fixes
|
||||
- **✅ Подавлены collapsible_if warnings**: `#[allow(clippy::collapsible_if)]`
|
||||
- `auth.rs`: extract_token_from_request (3 уровня вложенности)
|
||||
- `handlers/common.rs`: is_vercel_request (2 функции)
|
||||
- `security.rs`: header validation, extract_client_ip (3 функции)
|
||||
- `thumbnail.rs`: cleanup_cache (1 цикл)
|
||||
- Сохранена читаемость: явные guard clauses вместо let chains
|
||||
- Let chains нестабильны в Rust 1.90 (требуется nightly)
|
||||
|
||||
### 🚀 CI/CD: Optimization (YAGNI + DRY)
|
||||
- **🪓 Упрощён CI pipeline**: 265 строк → 56 строк (-80%)
|
||||
- Удалены избыточные проверки (`continue-on-error`, условные блоки памяти)
|
||||
@@ -11,7 +20,7 @@
|
||||
- Прямой `cargo test --all` вместо раздельных unit/integration
|
||||
- Убраны проверки rustfmt/clippy availability (fail fast)
|
||||
- Удалены get_repo_name/get_branch_name (не используются)
|
||||
- **✅ Использование существующего Rust**: Не переустанавливаем, используем уже установленный
|
||||
- **✅ Использование Rust**: Не переустанавливаем, используем уже установленный
|
||||
- Быстрее: нет скачивания и установки toolchain
|
||||
- Решает cross-device link errors при обновлении
|
||||
- **✅ Исправлена загрузка SSH ключа**: `printf '%s'` без лишнего `\n`
|
||||
|
||||
@@ -85,6 +85,7 @@ fn decode_jwt_token(token: &str) -> Result<TokenClaims, Box<dyn Error>> {
|
||||
}
|
||||
|
||||
/// Извлекает токен из HTTP запроса (поддерживает Bearer, X-Session-Token, Cookie)
|
||||
#[allow(clippy::collapsible_if)]
|
||||
pub fn extract_token_from_request(req: &actix_web::HttpRequest) -> Option<String> {
|
||||
// 1. Bearer токен в Authorization header
|
||||
if let Some(auth_header) = req.headers().get("authorization") {
|
||||
|
||||
@@ -117,6 +117,7 @@ pub fn create_file_response_with_analytics(
|
||||
}
|
||||
|
||||
/// Проверяет, является ли запрос от Vercel Edge API
|
||||
#[allow(clippy::collapsible_if)]
|
||||
pub fn is_vercel_request(req: &HttpRequest) -> bool {
|
||||
// Проверяем User-Agent на Vercel
|
||||
if let Some(user_agent) = req.headers().get("user-agent") {
|
||||
|
||||
@@ -65,6 +65,7 @@ impl SecurityConfig {
|
||||
}
|
||||
|
||||
// Проверка длины значений заголовков
|
||||
#[allow(clippy::collapsible_if)]
|
||||
for (name, value) in req.headers() {
|
||||
if let Ok(value_str) = value.to_str() {
|
||||
if value_str.len() > self.max_header_value_length {
|
||||
@@ -187,6 +188,7 @@ impl SecurityConfig {
|
||||
}
|
||||
|
||||
/// Извлекает IP адрес клиента
|
||||
#[allow(clippy::collapsible_if)]
|
||||
pub fn extract_client_ip(req: &HttpRequest) -> String {
|
||||
// Проверяем X-Forwarded-For (для прокси)
|
||||
if let Some(forwarded) = req.headers().get("x-forwarded-for") {
|
||||
|
||||
@@ -313,6 +313,7 @@ pub fn cleanup_cache(cache_dir: &str, max_age_days: u64) -> Result<(), Box<dyn s
|
||||
let cutoff_time =
|
||||
std::time::SystemTime::now() - std::time::Duration::from_secs(max_age_days * 24 * 60 * 60);
|
||||
|
||||
#[allow(clippy::collapsible_if)]
|
||||
for entry in fs::read_dir(cache_path)? {
|
||||
let entry = entry?;
|
||||
let metadata = entry.metadata()?;
|
||||
|
||||
Reference in New Issue
Block a user