34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
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}"'},
|
|
)
|