use crate::BilibiliRequest;
use crate::response::BpiResult;
use crate::vip::VipClient;
use crate::vip::params::VipPrivilegeReceiveParams;
use serde::{Deserialize, Serialize};
const PRIVILEGE_RECEIVE_ENDPOINT: &str = "https://api.bilibili.com/x/vip/privilege/receive";
const EXPERIENCE_ADD_ENDPOINT: &str = "https://api.bilibili.com/x/vip/experience/add";
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct VipExperienceData {
pub r#type: u32,
pub is_grant: bool,
}
impl<'a> VipClient<'a> {
pub async fn receive_privilege(
&self,
params: VipPrivilegeReceiveParams,
) -> BpiResult<Option<serde_json::Value>> {
let csrf = self.client.csrf()?;
self.client
.post(PRIVILEGE_RECEIVE_ENDPOINT)
.form(¶ms.form_pairs(&csrf))
.send_bpi_optional_payload("vip.privilege.receive")
.await
}
pub async fn add_experience(&self) -> BpiResult<VipExperienceData> {
let csrf = self.client.csrf()?;
let params = [("csrf", csrf)];
self.client
.post(EXPERIENCE_ADD_ENDPOINT)
.form(¶ms)
.send_bpi_payload("vip.experience.add")
.await
}
}
#[cfg(test)]
mod tests {}