from fastapi import APIRouter, Depends, HTTPException from fastapi.responses import StreamingResponse from app.api.deps import get_current_user from app.models.user import User from app.schemas.swos_beta import SwosBetaCredentials, SwosBetaProbeResponse from app.services.swos_beta_service import swos_beta_service router = APIRouter() @router.post('/probe', response_model=SwosBetaProbeResponse) def probe_swos(payload: SwosBetaCredentials, current_user: User = Depends(get_current_user)): del current_user try: return swos_beta_service.probe(payload) except ValueError as exc: raise HTTPException(status_code=400, detail=str(exc)) from exc @router.post('/download') def download_swos_backup(payload: SwosBetaCredentials, current_user: User = Depends(get_current_user)): del current_user try: backup = swos_beta_service.download_backup(payload) except ValueError as exc: raise HTTPException(status_code=400, detail=str(exc)) from exc return StreamingResponse( iter([backup.content]), media_type=backup.content_type, headers={'Content-Disposition': f'attachment; filename="{backup.filename}"'}, )