aboutsummaryrefslogtreecommitdiff
path: root/games/rstnode/rst-core/src/net/parser.rs
blob: d7fdf3de964af99a01b991ade671a2b938281e80 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use crate::{
    error::Error,
    wire::{Request, Response},
    GameIf,
};
use std::sync::Arc;

/// Parse a request and call a game interface function for it
pub async fn request(req: Request, game: Arc<impl GameIf>) -> Response {
    use Request::*;
    match req {
        Register(name, pw) => super::register(game.register(name, pw).await),
        Login(name, pw_hash) => super::login(game.login(name, pw_hash).await),
        Logout(user) => super::logout(game.logout(user).await),
        _ => super::invalid(),
    }
}