2 unstable releases
0.2.0 | Aug 1, 2023 |
---|---|
0.1.0 | Jun 19, 2021 |
#345 in Games
22 downloads per month
Used in steam-vent
11KB
246 lines
Steam-Vent
Interact with the Steam network via rust
Allows communication with the steam servers using the same protocol as the regular steam client.
State
While the project is still very incomplete, the basics of authenticating to steam and sending requests is working.
- Anonymous sessions
- Password Authentication
- QR Authentication
- Steam guard (device or email) confirmation
- Device notification confirmation
- Saved machine token confirmation
- Making RPC calls over the connection
- High level wrappers around the RPC calls
Usage
Note that this project is still in early development and api's 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("\\appid\\440".into());
let some_tf2_servers = connection.service_method(req).await?;
for server in some_tf2_servers.servers {
println!(
"{}({}) playing {}",
server.get_name(),
server.get_addr(),
server.get_map()
);
}
Ok(())
}
Credit
This is in large parts inspired by and based of @DoctorMcKay's work on SteamUser, massive credits go to all who worked on that.
Dependencies
~4.5MB
~97K SLoC