1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
//! # steam-rs
//!
//! Safe and convenient Rust bindings for the Steam Web API.
//!
//! **Warning**: This crate is still a work in progress. Breaking changes and instability are to be expected. Use with caution—**this is not production-ready**.
//!
//! The core of this crate is the [`Steam`] struct, which interacts with the Steam Web API. It typically[^1] needs to be initialized with a valid Steam API key.
//!
//! ```
//! use steam_rs::Steam;
//!
//! // Retrieve the Steam API key from an environment variable.
//! let steam_api_key = &std::env::var("STEAM_API_KEY").expect("Missing an API key");
//!
//! // Initialize the Steam API client.
//! let steam = Steam::new(steam_api_key);
//! ```
//!
//! Another key component of this crate is the [`SteamId`](`steam_id::SteamId`) struct. It represents a Steam user ID[^2], which is often used when querying user data.
//!
//! ## Example
//!
//! Here is an example, where the [`Steam`] client requests data about two users using the [`.get_player_summaries(steam_ids)`](`Steam::get_player_summaries()`) method:
//!
//! ```
//! use steam_rs::{steam_id::SteamId, Steam};
//!
//! #[tokio::main]
//! async fn main() {
//! // Get the Steam API Key as an environment variable.
//! let steam_api_key = &std::env::var("STEAM_API_KEY").expect("Missing an API key");
//!
//! // Initialize the Steam API client.
//! let steam = Steam::new(steam_api_key);
//!
//! // Request the player summaries of SteamIDs `76561198136162943` and `76561197960435530`.
//! let steam_ids = vec![
//! SteamId::new(76561198136162943), // Garrett Howard
//! SteamId(76561197960435530), // Robin Walker
//! ];
//!
//! let player_summaries = steam.get_player_summaries(steam_ids).await.unwrap();
//!
//! // Print the recieved information about the players.
//! for player in player_summaries {
//! println!(
//! "{:?}'s SteamID is {:?}",
//! player.persona_name, player.steam_id
//! )
//! }
//! }
//! ```
//!
//! [^1]: Not all API endpoints require an API key, and in that case providing one is optional.
//! [^2]: Specifically, [`SteamId`](`steam_id::SteamId`) represents a SteamID64 type, but more types, such as SteamID and SteamID3 are planned in future releases.
// This remains private
const BASE: &str = "https://api.steampowered.com";