Skip to main content

fume_core/
user.rs

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}