small cleanup

This commit is contained in:
Luuk van Oijen
2023-11-20 09:47:35 +01:00
parent 81816da44d
commit 8280b06253
2 changed files with 61 additions and 61 deletions

59
src/heartbeat.rs Normal file
View File

@@ -0,0 +1,59 @@
use serde::Serialize;
#[derive(Serialize)]
struct HeartbeatInfo {
uuid: String,
players: usize,
maxplayers: usize,
port: u16,
map: String,
private: String, // Needs to be either "true" or "false"
version: String,
clientversion: String,
name: String,
modlist: String,
modstotalsize: usize,
modstotal: usize,
playerslist: String,
desc: String,
}
pub async fn backend_heartbeat(config: std::sync::Arc<crate::config::Config>) {
let info = HeartbeatInfo {
uuid: config.general.auth_key.clone().unwrap_or(String::from("Unknown name!")),
players: 0, // TODO: Implement this. Easiest would probably be to have the server send updates every so often
maxplayers: config.general.max_players,
port: config.general.port.unwrap_or(30814),
map: config.general.map.clone(),
private: if config.general.private { String::from("true") } else { String::from("false") },
version: String::from("3.3.0"), // TODO: Don't hardcode this
clientversion: String::from("2.0"), // TODO: What? I think for now I can fill in 2.0
name: config.general.name.clone(),
modlist: String::from("-"), // TODO: Implement this
modstotalsize: 0, // TODO: Implement this
modstotal: 0, // TODO: Implement this
playerslist: String::from("luuk-bepis;"), // TODO: Implement this
desc: config.general.description.clone(),
};
let mut interval = tokio::time::interval(tokio::time::Duration::from_secs(30));
loop {
interval.tick().await;
heartbeat_post(&info).await;
}
}
async fn heartbeat_post(heartbeat_info: &HeartbeatInfo) {
match reqwest::Client::new()
.post("https://backend.beammp.com/heartbeat")
.form(heartbeat_info)
.send()
.await
{
Ok(resp) => {
debug!("heartbeat response:\n{:?}", resp.text().await);
},
Err(e) => error!("Heartbeat error occured: {e}"),
}
}

View File

@@ -2,10 +2,9 @@
#[macro_use] extern crate async_trait;
#[macro_use] extern crate lazy_static;
use serde::Serialize;
mod server;
mod config;
mod heartbeat;
#[tokio::main]
async fn main() {
@@ -41,7 +40,7 @@ async fn main() {
let user_config = std::sync::Arc::new(user_config);
tokio::spawn(backend_heartbeat(user_config.clone()));
tokio::spawn(heartbeat::backend_heartbeat(user_config.clone()));
let mut server = server::Server::new(user_config)
.await
@@ -54,61 +53,3 @@ async fn main() {
}
}
}
#[derive(Serialize)]
struct HeartbeatInfo {
uuid: String,
players: usize,
maxplayers: usize,
port: u16,
map: String,
private: String, // Needs to be either "true" or "false"
version: String,
clientversion: String,
name: String,
modlist: String,
modstotalsize: usize,
modstotal: usize,
playerslist: String,
desc: String,
}
async fn backend_heartbeat(config: std::sync::Arc<config::Config>) {
let info = HeartbeatInfo {
uuid: config.general.auth_key.clone().unwrap_or(String::from("Unknown name!")),
players: 0, // TODO: Implement this. Easiest would probably be to have the server send updates every so often
maxplayers: config.general.max_players,
port: config.general.port.unwrap_or(30814),
map: config.general.map.clone(),
private: if config.general.private { String::from("true") } else { String::from("false") },
version: String::from("3.3.0"),
clientversion: String::from("2.0"), // TODO: What? I think for now I can fill in 2.0
name: config.general.name.clone(),
modlist: String::from("-"), // TODO: Implement this.
modstotalsize: 0, // TODO: Implement this.
modstotal: 0, // TODO: Implement this.
playerslist: String::from("luuk-bepis;"), // TODO: Implement this
desc: config.general.description.clone(),
};
let mut interval = tokio::time::interval(tokio::time::Duration::from_secs(30));
loop {
interval.tick().await;
heartbeat_post(&info).await;
}
}
async fn heartbeat_post(heartbeat_info: &HeartbeatInfo) {
match reqwest::Client::new()
.post("https://backend.beammp.com/heartbeat")
.form(heartbeat_info)
.send()
.await
{
Ok(resp) => {
debug!("heartbeat response:\n{:?}", resp.text().await);
},
Err(e) => error!("Heartbeat error occured: {e}"),
}
}