Skip to main content

farcaster_rs/follows/
unfollow_user.rs

1use crate::constants::merkle::API_ROOT;
2use crate::types::follows::unfollow_user::UnfollowUserRoot;
3use crate::Farcaster;
4use serde_json::{json, Value};
5use std::error::Error;
6
7impl Farcaster {
8    pub async fn unfollow_user_by_fid(&self, fid: i64) -> Result<UnfollowUserRoot, Box<dyn Error>> {
9        let payload: Value = json!({ "targetFid": fid });
10
11        let unfollow_reqwest = reqwest::Client::new()
12            .delete(format!("{}/v2/follows", API_ROOT))
13            .header("Content-Type", "application/json")
14            .header(
15                "Authorization",
16                &self.account.session_token.as_ref().unwrap().secret,
17            )
18            .json(&payload)
19            .send()
20            .await?
21            .text()
22            .await?;
23
24        let unfollow: UnfollowUserRoot = serde_json::from_str(&unfollow_reqwest)?;
25
26        Ok(unfollow)
27    }
28
29    pub async fn unfollow_user_by_username(
30        &self,
31        username: &str,
32    ) -> Result<UnfollowUserRoot, Box<dyn Error>> {
33        let fid = &self.get_user_by_username(username).await?;
34
35        let unfollow = &self.unfollow_user_by_fid(fid.fid).await?;
36
37        Ok(unfollow.clone())
38    }
39
40    pub async fn unfollow_user_by_address(
41        &self,
42        address: &str,
43    ) -> Result<UnfollowUserRoot, Box<dyn Error>> {
44        let fid = &self.get_user_by_address(address).await?;
45
46        let unfollow = &self.unfollow_user_by_fid(fid.fid).await?;
47
48        Ok(unfollow.clone())
49    }
50}