From 1500e40d3f0b3623ba8d832044abb160944c9d8f Mon Sep 17 00:00:00 2001 From: Cizz22 Date: Thu, 12 Mar 2026 15:12:54 +0700 Subject: [PATCH] add dowm;pad --- src/aeros_project/router.py | 64 +++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/src/aeros_project/router.py b/src/aeros_project/router.py index 25dd97a..cbd9d5b 100644 --- a/src/aeros_project/router.py +++ b/src/aeros_project/router.py @@ -12,7 +12,7 @@ from src.config import WINDOWS_AEROS_BASE_URL from src.database.core import DbSession from src.database.service import CommonParameters from src.models import StandardResponse - +from src.aeros_utils import aeros_post from .schema import AerosProjectInput, AerosMetadata, OverhaulScheduleCreate, OverhaulScheduleUpdate from .service import import_aro_project, fetch_aro_record, reset_project, create, update, delete @@ -48,39 +48,41 @@ async def forward_download(db_session: DbSession): project = data.scalar_one_or_none() filename = f"{project.project_name}.aro" - url = f"{WINDOWS_AEROS_BASE_URL}/download/{filename}" - - async with httpx.AsyncClient() as client: - try: - # Download entire file (no streaming) - response = await client.get(url) - - if response.status_code != 200: - raise HTTPException( - status_code=response.status_code, - detail="Failed to download from upstream service" - ) - - file_bytes = response.content # full file in memory - - # Extract headers - # Force a secure/default filename for the client - secure_filename = "rbd_project_export.aro" - content_disposition = f'attachment; filename="{secure_filename}"' - media_type = response.headers.get( - "content-type", - "application/octet-stream" - ) - # Return as ordinary file response - return Response( - content=file_bytes, - media_type=media_type, - headers={"Content-Disposition": content_disposition} + try: + # Download entire file (no streaming) + response = await aeros_post( + "/download", + json={ + "filename": filename + }, + ) + + if response.status_code != 200: + raise HTTPException( + status_code=response.status_code, + detail="Failed to download from upstream service" ) - except Exception as e: - raise HTTPException(status_code=500, detail=str(e)) + file_bytes = response.content # full file in memory + + # Extract headers + # Force a secure/default filename for the client + content_disposition = f'attachment; filename="{filename}"' + media_type = response.headers.get( + "content-type", + "application/octet-stream" + ) + + # Return as ordinary file response + return Response( + content=file_bytes, + media_type=media_type, + headers={"Content-Disposition": content_disposition} + ) + + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) @router.get("/metadata", response_model=StandardResponse[AerosMetadata])