1use serde::{Deserialize, Serialize};
2
3use crate::{Param, quoted_number};
4
5pub(crate) const INTERFACE: &str = "ISteamUser";
6pub(crate) const STEAM_ID_DELTA: u64 = 76561197960265728;
7
8pub mod get_friend_list;
9pub mod get_player_summaries;
10pub mod get_user_group_list;
11pub mod resolve_vanity_url;
12
13quoted_number!(SteamId);
14quoted_number!(GroupId);
15
16impl From<u64> for SteamId {
17 fn from(value: u64) -> Self {
18 SteamId(value)
19 }
20}
21
22impl From<&u64> for SteamId {
23 fn from(value: &u64) -> Self {
24 SteamId(*value)
25 }
26}
27
28impl From<u32> for SteamId {
29 fn from(value: u32) -> Self {
30 SteamId(u64::from(value) + STEAM_ID_DELTA)
31 }
32}
33
34impl From<&u32> for SteamId {
35 fn from(value: &u32) -> Self {
36 SteamId(u64::from(*value) + STEAM_ID_DELTA)
37 }
38}
39
40impl From<SteamId> for u32 {
41 fn from(value: SteamId) -> Self {
42 (value.0 - STEAM_ID_DELTA) as u32
43 }
44}
45
46impl From<SteamId> for u64 {
47 fn from(value: SteamId) -> Self {
48 value.0
49 }
50}
51
52impl Param for SteamId {
53 fn name() -> &'static str {
54 "steamid"
55 }
56
57 fn value(&self) -> String {
58 self.0.to_string()
59 }
60}
61
62#[derive(Copy, Clone, Debug, Serialize, Deserialize)]
63pub enum Relationship {
64 #[serde(rename = "all")]
65 All,
66 #[serde(rename = "friend")]
67 Friend,
68}
69
70impl Param for Relationship {
71 fn name() -> &'static str {
72 "relationship"
73 }
74
75 fn value(&self) -> String {
76 match *self {
77 Relationship::All => "all".to_string(),
78 Relationship::Friend => "friend".to_string(),
79 }
80 }
81}