diff --git a/server/src/main.rs b/server/src/main.rs index f81eb73..077e0d4 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -63,7 +63,7 @@ impl Direction { } } -#[derive(Serialize, Deserialize)] +#[derive(Serialize, Deserialize, Clone)] struct Turtle { name: Name, fuel: usize, @@ -111,9 +111,10 @@ async fn main() -> Result<(), Error> { .route("/turtle/new", post(create_turtle)) .route("/turtle/update/:id", post(command)) .route("/turtle/client.lua", get(client)) - .route("/turtle/control/:id/setGoal", post(set_goal)) + .route("/turtle/setGoal/:id", post(set_goal)) + .route("/turtle/info/:id", get(turtle_info)) + .route("/turtle/updateAll", get(update_turtles)) .route("/flush", get(flush)) - .route("/updateTurtles", get(update_turtles)) .with_state(state.clone()); let listener = tokio::net::TcpListener::bind("0.0.0.0:48228").await.unwrap(); @@ -221,6 +222,15 @@ async fn update_turtles( "ACK" } +async fn turtle_info( + Path(id): Path, + State(state): State, + ) -> Json { + let state = &mut state.read().await; + + Json(state.turtles[id as usize].clone()) +} + async fn command( Path(id): Path, State(state): State,