fix(api): add Request parameter to process_url endpoint for session access

The @require_login decorator expects a Starlette Request as the first
parameter to access request.session, but process_url only had a
URLUploadRequest Pydantic model parameter. This caused an
AttributeError: 'URLUploadRequest' object has no attribute 'session'
when POST /api/process-url was called.

Fix: Add `request: Request` as the first parameter and rename the
Pydantic model parameter from `request` to `url_request`.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-02-11 14:25:57 +00:00
parent 1cb6a60135
commit 9cd7a80cbc
+7 -6
View File
@@ -11,7 +11,7 @@ import uuid
from typing import Optional from typing import Optional
import requests import requests
from fastapi import APIRouter, HTTPException from fastapi import APIRouter, HTTPException, Request
from pydantic import BaseModel, HttpUrl, validator from pydantic import BaseModel, HttpUrl, validator
from app.auth import require_login from app.auth import require_login
@@ -161,7 +161,7 @@ def validate_file_type(content_type: str, filename: str) -> bool:
@router.post("/process-url") @router.post("/process-url")
@require_login @require_login
async def process_url(request: URLUploadRequest): async def process_url(request: Request, url_request: URLUploadRequest):
""" """
Download a file from a URL and enqueue it for processing. Download a file from a URL and enqueue it for processing.
@@ -172,7 +172,8 @@ async def process_url(request: URLUploadRequest):
- Timeout protection: prevents hanging on slow/malicious servers - Timeout protection: prevents hanging on slow/malicious servers
Args: Args:
request: URLUploadRequest with url and optional filename request: Starlette Request object (used by require_login decorator)
url_request: URLUploadRequest with url and optional filename
Returns: Returns:
JSON with task_id and status JSON with task_id and status
@@ -180,14 +181,14 @@ async def process_url(request: URLUploadRequest):
Raises: Raises:
HTTPException: If URL is invalid, unsafe, or file cannot be processed HTTPException: If URL is invalid, unsafe, or file cannot be processed
""" """
url = str(request.url) url = str(url_request.url)
# Validate URL safety (SSRF protection) # Validate URL safety (SSRF protection)
validate_url_safety(url) validate_url_safety(url)
# Parse URL to extract filename if not provided # Parse URL to extract filename if not provided
if request.filename: if url_request.filename:
original_filename = request.filename original_filename = url_request.filename
else: else:
# Extract filename from URL path # Extract filename from URL path
parsed = urllib.parse.urlparse(url) parsed = urllib.parse.urlparse(url)