major server manager overhaul
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
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))
|
||||
Reference in New Issue
Block a user