steam-user 0.1.0

Steam User web client for Rust - HTTP-based Steam Community interactions
Documentation
use steamid::SteamID;

use super::super::{RemoteSteamUser, RemoteSteamUserError};
use crate::types::{GroupInfoXml, GroupOverview, InvitableGroup};

impl RemoteSteamUser {
    pub async fn join_group(&self, group_id: SteamID) -> Result<(), RemoteSteamUserError> {
        self.call_void("/api/groups/join", serde_json::json!({"group_id": group_id.steam_id64()})).await
    }
    pub async fn leave_group(&self, group_id: SteamID) -> Result<(), RemoteSteamUserError> {
        self.call_void("/api/groups/leave", serde_json::json!({"group_id": group_id.steam_id64()})).await
    }
    pub async fn get_group_members(&self, group_id: SteamID) -> Result<Vec<SteamID>, RemoteSteamUserError> {
        self.call_typed("/api/groups/members", serde_json::json!({"group_id": group_id.steam_id64()})).await
    }
    pub async fn post_group_announcement(&self, group_id: SteamID, headline: &str, content: &str) -> Result<(), RemoteSteamUserError> {
        self.call_void("/api/groups/announcement", serde_json::json!({"group_id": group_id.steam_id64(), "headline": headline, "content": content})).await
    }
    pub async fn kick_group_member(&self, group_id: SteamID, member_id: SteamID) -> Result<(), RemoteSteamUserError> {
        self.call_void("/api/groups/kick", serde_json::json!({"group_id": group_id.steam_id64(), "member_id": member_id.steam_id64()})).await
    }
    pub async fn invite_user_to_group(&self, user_id: SteamID, group_id: SteamID) -> Result<(), RemoteSteamUserError> {
        self.call_void("/api/groups/invite", serde_json::json!({"user_id": user_id.steam_id64(), "group_id": group_id.steam_id64()})).await
    }
    pub async fn invite_users_to_group(&self, user_ids: &[SteamID], group_id: SteamID) -> Result<(), RemoteSteamUserError> {
        let ids: Vec<u64> = user_ids.iter().map(|id| id.steam_id64()).collect();
        self.call_void("/api/groups/invite_multiple", serde_json::json!({"user_ids": ids, "group_id": group_id.steam_id64()})).await
    }
    pub async fn accept_group_invite(&self, group_id: SteamID) -> Result<(), RemoteSteamUserError> {
        self.call_void("/api/groups/accept_invite", serde_json::json!({"group_id": group_id.steam_id64()})).await
    }
    pub async fn ignore_group_invite(&self, group_id: SteamID) -> Result<(), RemoteSteamUserError> {
        self.call_void("/api/groups/ignore_invite", serde_json::json!({"group_id": group_id.steam_id64()})).await
    }
    pub async fn get_group_overview(&self, gid: Option<SteamID>, group_url: Option<&str>, page: Option<i32>, search_key: Option<&str>) -> Result<GroupOverview, RemoteSteamUserError> {
        self.call_typed("/api/groups/overview", serde_json::json!({"gid": gid.map(|g| g.steam_id64()), "group_url": group_url, "page": page.unwrap_or(1), "search_key": search_key})).await
    }
    pub async fn get_group_steam_id_from_vanity_url(&self, vanity_url: &str) -> Result<String, RemoteSteamUserError> {
        self.call_typed("/api/groups/resolve_vanity", serde_json::json!({"vanity_url": vanity_url})).await
    }
    pub async fn get_group_info_xml(&self, gid: Option<SteamID>, group_url: Option<&str>, page: Option<u32>) -> Result<GroupInfoXml, RemoteSteamUserError> {
        self.call_typed("/api/groups/info_xml", serde_json::json!({"gid": gid.map(|g| g.steam_id64()), "group_url": group_url, "page": page})).await
    }
    pub async fn get_group_info_xml_full(&self, gid: Option<SteamID>, group_url: Option<&str>) -> Result<GroupInfoXml, RemoteSteamUserError> {
        self.call_typed("/api/groups/info_xml_full", serde_json::json!({"gid": gid.map(|g| g.steam_id64()), "group_url": group_url})).await
    }
    pub async fn get_invitable_groups(&self, user_steam_id: SteamID) -> Result<Vec<InvitableGroup>, RemoteSteamUserError> {
        self.call_typed("/api/groups/invitable", serde_json::json!({"user_steam_id": user_steam_id.steam_id64()})).await
    }
    pub async fn invite_all_friends_to_group(&self, group_id: SteamID) -> Result<(), RemoteSteamUserError> {
        self.call_void("/api/groups/invite_all_friends", serde_json::json!({"group_id": group_id.steam_id64()})).await
    }
}