From 0344717b58e35c3f188abbf4648c6601245e566c Mon Sep 17 00:00:00 2001 From: Jonni Liljamo Date: Tue, 14 Feb 2023 15:04:52 +0200 Subject: [PATCH] feat(sdbclient): patch game state API endpoin --- sdbclient/src/api/game/mod.rs | 3 ++ sdbclient/src/api/game/patchstate.rs | 45 ++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 sdbclient/src/api/game/patchstate.rs diff --git a/sdbclient/src/api/game/mod.rs b/sdbclient/src/api/game/mod.rs index 1245ac5..d2bfbc2 100644 --- a/sdbclient/src/api/game/mod.rs +++ b/sdbclient/src/api/game/mod.rs @@ -24,3 +24,6 @@ pub use join::*; mod mygames; pub use mygames::*; + +mod patchstate; +pub use patchstate::*; diff --git a/sdbclient/src/api/game/patchstate.rs b/sdbclient/src/api/game/patchstate.rs new file mode 100644 index 0000000..77cf7d2 --- /dev/null +++ b/sdbclient/src/api/game/patchstate.rs @@ -0,0 +1,45 @@ +/* + * This file is part of sdbclient + * Copyright (C) 2023 Jonni Liljamo + * + * Licensed under GPL-3.0-only. + * See LICENSE for licensing information. + */ + +use reqwest; +use serde::{Deserialize, Serialize}; + +use super::{ + types::{Game, GameState}, + APIErrorWrapper, +}; + +#[derive(Serialize)] +pub struct PostState { + pub state: GameState, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(untagged)] +pub enum ResponsePatchGameState { + Error(APIErrorWrapper), + Valid(Game), +} + +pub fn patch_state( + api_address: String, + token: String, + game_id: String, + state: GameState, +) -> ResponsePatchGameState { + let client = reqwest::blocking::Client::new(); + + let resp = client + .patch(&format!("{}/game/{}/state", api_address, game_id)) + .header("Authorization", token) + .json(&PostState { state }) + .send() + .unwrap(); + + resp.json().unwrap() +} -- 2.44.1