From 840a839541aafe6c71281d2a054fab32a38a963b Mon Sep 17 00:00:00 2001 From: Adam <24621027+adoyle0@users.noreply.github.com> Date: Sat, 4 May 2024 02:32:49 -0400 Subject: [PATCH] move structs --- src/api.rs | 41 +------------------------------------- src/api/message_handler.rs | 39 +++++++++++++++++++++++++++++++++++- src/gamemaster.rs | 3 ++- src/main.rs | 1 + 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/api.rs b/src/api.rs index 82ae3e2..3934555 100644 --- a/src/api.rs +++ b/src/api.rs @@ -1,49 +1,10 @@ -use crate::gamemaster::*; use crate::AppState; -use axum::{ - extract::{ - ws::{Message, WebSocket, WebSocketUpgrade}, - ConnectInfo, State, - }, - response::IntoResponse, -}; +use axum::extract::ws::{Message, WebSocket}; use futures::{sink::SinkExt, stream::StreamExt}; -use serde::Deserialize; use std::{net::SocketAddr, sync::Arc}; pub mod message_handler; use crate::message_handler::*; -/// New game request structure -#[derive(Debug, Deserialize)] -pub struct NewGameRequest { - /// Game name - pub name: String, - /// Game host - pub host: CAHPlayer, - /// Chosen packs - pub packs: Vec, -} - -/// Game join request structure -pub struct GameJoinRequest { - /// Game id - pub id: u8, // increase later - /// Game password - pub password: String, - /// Player info - pub player: CAHPlayer, -} - -pub async fn websocket_handler( - ws: WebSocketUpgrade, - // user_agent: Option>, - ConnectInfo(addr): ConnectInfo, - State(state): State>, -) -> impl IntoResponse { - tracing::debug!("New connection from {addr}"); - ws.on_upgrade(move |socket| websocket(socket, state, addr)) -} - fn greeting(state: &Arc) -> String { format!( "{:#?} Card packs loaded\n\ diff --git a/src/api/message_handler.rs b/src/api/message_handler.rs index 162bf1f..98de9a8 100644 --- a/src/api/message_handler.rs +++ b/src/api/message_handler.rs @@ -1,8 +1,45 @@ use crate::api::{greeting, Message, SocketAddr}; +use crate::websocket; use crate::AppState; use crate::Arc; use crate::CAHGame; -use crate::NewGameRequest; +use crate::CAHPlayer; +use axum::{ + extract::{ConnectInfo, State, WebSocketUpgrade}, + response::IntoResponse, +}; +use serde::Deserialize; + +/// New game request structure +#[derive(Debug, Deserialize)] +pub struct NewGameRequest { + /// Game name + pub name: String, + /// Game host + pub host: CAHPlayer, + /// Chosen packs + pub packs: Vec, +} + +/// Game join request structure +pub struct GameJoinRequest { + /// Game id + pub id: u8, // increase later + /// Game password + pub password: String, + /// Player info + pub player: CAHPlayer, +} + +pub async fn websocket_handler( + ws: WebSocketUpgrade, + // user_agent: Option>, + ConnectInfo(addr): ConnectInfo, + State(state): State>, +) -> impl IntoResponse { + tracing::debug!("New connection from {addr}"); + ws.on_upgrade(move |socket| websocket(socket, state, addr)) +} pub async fn message_handler(message: Message, state: &Arc, who: SocketAddr) { let tx = &state.tx; diff --git a/src/gamemaster.rs b/src/gamemaster.rs index 69cd1c7..2620b8b 100644 --- a/src/gamemaster.rs +++ b/src/gamemaster.rs @@ -1,4 +1,4 @@ -use crate::api::NewGameRequest; // change this +use crate::message_handler::*; //change this use rand::prelude::IteratorRandom; use rand::thread_rng; use serde::{Deserialize, Serialize}; @@ -101,6 +101,7 @@ impl CAHGame { Ok(()) } + pub fn new(request: NewGameRequest) -> Result { let mut game = CAHGame { ..Default::default() diff --git a/src/main.rs b/src/main.rs index d256ff1..9f75aab 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,6 +13,7 @@ pub mod gamemaster; use crate::gamemaster::*; pub mod api; use crate::api::*; +use crate::message_handler::*; /// Parse json for card data fn load_json(path: &str) -> Result, Box> {