use super::super::{GasError, GasSteamUser};
use crate::types::{TradeOfferAsset, TradeOfferResult, TradeOffersResponse};
impl GasSteamUser {
pub async fn get_trade_url(&self) -> Result<Option<String>, GasError> {
self.call("get_trade_url", &[]).await
}
pub async fn get_trade_offer(&self) -> Result<TradeOffersResponse, GasError> {
self.call("get_trade_offers", &[]).await
}
pub async fn accept_trade_offer(&self, trade_offer_id: u64, partner_steam_id: Option<String>) -> Result<String, GasError> {
let tid = trade_offer_id.to_string();
match partner_steam_id {
Some(ref pid) => self.call("accept_trade_offer", &[("tradeOfferId", &tid), ("partnerSteamId", pid)]).await,
None => self.call("accept_trade_offer", &[("tradeOfferId", &tid)]).await,
}
}
pub async fn decline_trade_offer(&self, trade_offer_id: u64) -> Result<(), GasError> {
let tid = trade_offer_id.to_string();
self.call_void("decline_trade_offer", &[("tradeOfferId", &tid)]).await
}
pub async fn send_trade_offer(&self, trade_url: &str, my_assets: Vec<TradeOfferAsset>, their_assets: Vec<TradeOfferAsset>, message: &str) -> Result<TradeOfferResult, GasError> {
let ma = serde_json::to_string(&my_assets).map_err(GasError::Json)?;
let ta = serde_json::to_string(&their_assets).map_err(GasError::Json)?;
self.call("send_trade_offer", &[("tradeUrl", trade_url), ("myAssets", &ma), ("theirAssets", &ta), ("message", message)]).await
}
}