summaryrefslogtreecommitdiff
path: root/backend/src/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src/main.py')
-rw-r--r--backend/src/main.py37
1 files changed, 31 insertions, 6 deletions
diff --git a/backend/src/main.py b/backend/src/main.py
index c1a76f5..fef58b0 100644
--- a/backend/src/main.py
+++ b/backend/src/main.py
@@ -3,6 +3,9 @@ import json
import logging
from typing import Any, Optional
+from dotenv import load_dotenv
+load_dotenv()
+
from fastapi import BackgroundTasks, FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import StreamingResponse
@@ -21,7 +24,7 @@ async def start_manager() -> None:
while True:
try:
logger.info("Starting manager update")
- await asyncio.to_thread(manager.update)
+ await manager.update()
logger.info("Manager update completed")
except Exception as error:
logger.exception("An error occurred during manager update: %s", error)
@@ -64,7 +67,7 @@ async def read_route_info() -> Any:
@app.post("/create_route")
async def create_route(background_tasks: BackgroundTasks) -> dict:
"""Initiates route creation in the background."""
- background_tasks.add_task(manager.create_route)
+ asyncio.create_task(manager.create_route())
return {"status": "Route creation initiated"}
@app.get("/data_stream")
@@ -84,11 +87,33 @@ async def data_stream() -> StreamingResponse:
@app.get("/logs")
async def get_logs() -> Any:
"""Retrieves logs from the manager."""
- return manager.log_queue
+ return manager.log
@app.post("/open_market_window/{type_id}")
-async def open_market_window(type_id: int) -> Any:
+async def open_market_window(type_id: int) -> dict:
"""Opens a market window for a given `type_id` using the ESI API."""
- result = esi.open_market_window(type_id)
+ await esi.open_market_window(type_id)
logger.info("Opened market window for type_id %s", type_id)
- return result
+ return {"status": "opened"}
+
+@app.get("/settings")
+async def get_settings() -> dict:
+ """Returns the current ship settings."""
+ return manager.ship
+
+@app.post("/settings")
+async def update_settings(settings: dict) -> dict:
+ """Updates the ship settings."""
+ for key, value in settings.items():
+ if key in manager.ship:
+ manager.ship[key] = value
+ # Re-initialize the graph with new settings
+ from graph import NavigationGraph
+ manager.graph = NavigationGraph(manager.ship)
+ return {"status": "success", "settings": manager.ship}
+
+@app.post("/set_waypoints")
+async def set_waypoints_endpoint() -> dict:
+ """Uses the ESI API to push the calculated route as in-game waypoints"""
+ return await manager.set_waypoints()
+