Crates.io | steam-vent |
lib.rs | steam-vent |
version | 0.3.1 |
source | src |
created_at | 2023-08-04 18:48:00.976986 |
updated_at | 2024-10-29 18:29:33.262891 |
description | Interact with the Steam network via rust |
homepage | |
repository | https://github.com/icewind1991/steam-vent |
max_upload_size | |
id | 935562 |
size | 204,803 |
Allows communication with the steam servers using the same protocol as the regular steam client.
While the project is still incomplete, the most forms of authenticating to steam are implemented and you can send requests for the protobuf definitions included in the project.
Note that this project is still in early development and apis might see large changes.
use std::error::Error;
use steam_vent::connection::Connection;
use steam_vent::proto::steammessages_gameservers_steamclient::CGameServers_GetServerList_Request;
use steam_vent::serverlist::ServerList;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let server_list = ServerList::discover().await?;
let mut connection = Connection::anonymous(server_list).await?;
let mut req = CGameServers_GetServerList_Request::new();
req.set_limit(16);
req.set_filter(r"\appid\440".into());
let some_tf2_servers = connection.service_method(req).await?;
for server in some_tf2_servers.servers {
println!(
"{}({}) playing {}",
String::from_utf8_lossy(server.name()),
server.addr(),
server.map()
);
}
Ok(())
}
This is in large parts inspired by and based of @DoctorMcKay's work on SteamUser, massive credits go to all who worked on that.