diff options
Diffstat (limited to 'apirouters')
-rw-r--r-- | apirouters/agents.py | 6 | ||||
-rw-r--r-- | apirouters/tasks.py | 42 |
2 files changed, 45 insertions, 3 deletions
diff --git a/apirouters/agents.py b/apirouters/agents.py index 55825e6..a1e015b 100644 --- a/apirouters/agents.py +++ b/apirouters/agents.py @@ -1,13 +1,13 @@ from enum import Enum -from typing import Annotated, Dict, List +from typing import Annotated, Dict import openapi_client from fastapi import APIRouter, Depends, Response, HTTPException from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm -from ..modules import tasks -from ..modules.ships import Ship +from ..modules import task_type from ..modules.database import cursor, conn +from ..modules.ships import Ship router = APIRouter() oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") diff --git a/apirouters/tasks.py b/apirouters/tasks.py new file mode 100644 index 0000000..806de91 --- /dev/null +++ b/apirouters/tasks.py @@ -0,0 +1,42 @@ +from typing import Annotated +from fastapi import APIRouter, Depends + +from ..modules.database import cursor, conn +from ..modules.ships import Ship +from ..modules import task_type +from .agents import auth_agent, Agent + +router = APIRouter() + + +@router.get("/tasks") +async def get_tasks(agent: Annotated[Agent, Depends(auth_agent)]): + ships = [] + for ship in agent.ships.values(): + ship.load_task() + ships.append({"symbol": ship.symbol, "task": ship.task}) + + return {"ships": ships} + + +@router.get("/task/{ship_symbol}") +async def get_tasks(ship_symbol: str, agent: Annotated[Agent, Depends(auth_agent)]): + for current_ship in agent.ships.values(): + if current_ship.symbol == ship_symbol: + current_ship.load_task() + return {"symbol": current_ship.symbol, "task": current_ship.task} + + return {"error": "Unknown ship symbol."} + + +@router.post("/task/{ship_symbol}/set/{task_type}") +async def get_tasks(ship_symbol: str, task: str, agent: Annotated[Agent, Depends(auth_agent)]): + if task not in task_type.task_types: + return {"error": "Invalid task."} + + for current_ship in agent.ships.values(): + if current_ship.symbol == ship_symbol: + current_ship.set_task(task) + return {"symbol": current_ship.symbol, "task": current_ship.task} + + return {"error": "Unknown ship symbol."} |