From 9cd7a80cbc90e0af5dad2e46ddb4f197dabc1b2c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 14:25:57 +0000 Subject: [PATCH] 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> --- app/api/url_upload.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/app/api/url_upload.py b/app/api/url_upload.py index 49934254..0ffcd6e4 100644 --- a/app/api/url_upload.py +++ b/app/api/url_upload.py @@ -11,7 +11,7 @@ import uuid from typing import Optional import requests -from fastapi import APIRouter, HTTPException +from fastapi import APIRouter, HTTPException, Request from pydantic import BaseModel, HttpUrl, validator from app.auth import require_login @@ -161,7 +161,7 @@ def validate_file_type(content_type: str, filename: str) -> bool: @router.post("/process-url") @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. @@ -172,7 +172,8 @@ async def process_url(request: URLUploadRequest): - Timeout protection: prevents hanging on slow/malicious servers 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: JSON with task_id and status @@ -180,14 +181,14 @@ async def process_url(request: URLUploadRequest): Raises: 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(url) # Parse URL to extract filename if not provided - if request.filename: - original_filename = request.filename + if url_request.filename: + original_filename = url_request.filename else: # Extract filename from URL path parsed = urllib.parse.urlparse(url)