use crate::{handle_error, ErrorResponse, Result, Tarkov, PROD_ENDPOINT};
use crate::profile::Side;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize)]
struct FriendResponse {
#[serde(flatten)]
error: ErrorResponse,
data: Option<Friends>,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
#[serde(rename_all = "PascalCase")]
pub struct Friends {
pub friends: Vec<Friend>,
pub ignore: Vec<String>,
pub in_ignore_list: Vec<String>,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
#[serde(rename_all = "PascalCase")]
pub struct Friend {
#[serde(rename = "_id")]
pub id: String,
pub info: Info,
}
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
#[serde(rename_all = "PascalCase")]
pub struct Info {
pub nickname: String,
pub side: Side,
pub level: u64,
pub member_category: String,
}
impl Tarkov {
pub async fn get_friends(&self) -> Result<Friends> {
let url = format!("{}/client/friend/list", PROD_ENDPOINT);
let res: FriendResponse = self.post_json(&url, &{}).await?;
handle_error(res.error, res.data)
}
}