use steamid::SteamID;
use super::super::{GasError, GasSteamUser};
use crate::types::{AliasEntry, AvatarHistoryEntry, AvatarUploadResponse, SteamProfile, SteamUserProfile, UserSummaryProfile, UserSummaryXml};
impl GasSteamUser {
pub async fn resolve_user(&self, steam_id: SteamID) -> Result<Option<SteamUserProfile>, GasError> {
let id = steam_id.steam_id64().to_string();
self.call("resolve_user", &[("steamId64", &id)]).await
}
pub async fn get_profile(&self, steam_id: Option<SteamID>) -> Result<SteamProfile, GasError> {
match steam_id {
Some(id) => {
let s = id.steam_id64().to_string();
self.call("get_profile", &[("steamId64", &s)]).await
}
None => self.call("get_profile", &[]).await,
}
}
pub async fn fetch_full_profile(&self, steam_id: SteamID) -> Result<SteamProfile, GasError> {
let id = steam_id.steam_id64().to_string();
self.call("fetch_full_profile", &[("identifier", &id)]).await
}
pub async fn edit_profile(&self, settings: serde_json::Value) -> Result<(), GasError> {
let s = serde_json::to_string(&settings).map_err(GasError::Json)?;
self.call_void("edit_profile", &[("settings", &s)]).await
}
pub async fn set_persona_name(&self, name: &str) -> Result<(), GasError> {
self.call_void("set_persona_name", &[("name", name)]).await
}
pub async fn get_alias_history(&self, steam_id: SteamID) -> Result<Vec<AliasEntry>, GasError> {
let id = steam_id.steam_id64().to_string();
self.call("get_alias_history", &[("steamId64", &id)]).await
}
pub async fn clear_previous_aliases(&self) -> Result<(), GasError> {
self.call_void("clear_previous_aliases", &[]).await
}
pub async fn set_nickname(&self, steam_id: SteamID, nickname: &str) -> Result<(), GasError> {
let id = steam_id.steam_id64().to_string();
self.call_void("set_nickname", &[("targetSteamId64", &id), ("nickname", nickname)]).await
}
pub async fn remove_nickname(&self, steam_id: SteamID) -> Result<(), GasError> {
let id = steam_id.steam_id64().to_string();
self.call_void("remove_nickname", &[("targetSteamId64", &id)]).await
}
pub async fn post_profile_status(&self, text: &str, app_id: Option<u32>) -> Result<u64, GasError> {
let app_str = app_id.unwrap_or(0).to_string();
self.call("post_profile_status", &[("text", text), ("appId", &app_str)]).await
}
pub async fn select_previous_avatar(&self, avatar_hash: &str) -> Result<(), GasError> {
self.call_void("select_previous_avatar", &[("avatarHash", avatar_hash)]).await
}
pub async fn setup_profile(&self) -> Result<bool, GasError> {
self.call("setup_profile", &[]).await
}
pub async fn get_user_summary_from_xml(&self, steam_id: SteamID) -> Result<UserSummaryXml, GasError> {
let id = steam_id.steam_id64().to_string();
self.call("get_user_summary_from_xml", &[("steamId64", &id)]).await
}
pub async fn get_user_summary_from_profile(&self, steam_id: Option<SteamID>) -> Result<UserSummaryProfile, GasError> {
match steam_id {
Some(id) => {
let s = id.steam_id64().to_string();
self.call("get_user_summary_from_profile", &[("steamId64", &s)]).await
}
None => self.call("get_user_summary_from_profile", &[]).await,
}
}
pub async fn get_avatar_history(&self) -> Result<Vec<AvatarHistoryEntry>, GasError> {
self.call("get_avatar_history", &[]).await
}
pub async fn upload_avatar_from_url(&self, url: &str) -> Result<AvatarUploadResponse, GasError> {
self.call("upload_avatar_from_url", &[("imageUrl", url)]).await
}
}