Files
personal_development/ServerManagerWebApp/backend/app/routers/qbittorrent.py
T
2026-01-09 19:24:41 +00:00

64 lines
1.8 KiB
Python

from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from typing import List
from ..qbittorrent_manager import QbittorrentManager
router = APIRouter()
manager = QbittorrentManager()
class TorrentActionRequest(BaseModel):
hashes: List[str]
class DeleteRequest(TorrentActionRequest):
delete_files: bool = False
class LocationRequest(TorrentActionRequest):
location: str
@router.get("/")
def list_torrents():
try:
return manager.get_torrents()
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/pause")
def pause_torrents(request: TorrentActionRequest):
try:
manager.pause_torrents(request.hashes)
return {"status": "success"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/resume")
def resume_torrents(request: TorrentActionRequest):
try:
manager.resume_torrents(request.hashes)
return {"status": "success"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/delete")
def delete_torrents(request: DeleteRequest):
try:
manager.delete_torrents(request.hashes, request.delete_files)
return {"status": "success"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/recheck")
def recheck_torrents(request: TorrentActionRequest):
try:
manager.recheck_torrents(request.hashes)
return {"status": "success"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/location")
def set_location(request: LocationRequest):
try:
manager.set_location(request.hashes, request.location)
return {"status": "success"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))