farcaster_rs/follows/
follow_user.rs1use crate::constants::merkle::API_ROOT;
2use crate::types::follows::follow_user::FollowUserRoot;
3use crate::Farcaster;
4use serde_json::{json, Value};
5use std::error::Error;
6
7impl Farcaster {
8 pub async fn follow_user_by_fid(&self, fid: i64) -> Result<FollowUserRoot, Box<dyn Error>> {
18 let payload: Value = json!({ "targetFid": fid });
19
20 let follow_reqwest = reqwest::Client::new()
21 .put(format!("{}/v2/follows", API_ROOT))
22 .header("Content-Type", "application/json")
23 .header(
24 "Authorization",
25 &self.account.session_token.as_ref().unwrap().secret,
26 )
27 .json(&payload)
28 .send()
29 .await?
30 .text()
31 .await?;
32
33 let follow: FollowUserRoot = serde_json::from_str(&follow_reqwest)?;
34
35 Ok(follow)
36 }
37
38 pub async fn follow_user_by_username(
48 &self,
49 username: &str,
50 ) -> Result<FollowUserRoot, Box<dyn Error>> {
51 let fid = &self.get_user_by_username(username).await?;
52
53 let follow = &self.follow_user_by_fid(fid.fid).await?;
54
55 Ok(follow.clone())
56 }
57
58 pub async fn follow_user_by_address(
68 &self,
69 address: &str,
70 ) -> Result<FollowUserRoot, Box<dyn Error>> {
71 let fid = &self.get_user_by_address(address).await?;
72
73 let follow = &self.follow_user_by_fid(fid.fid).await?;
74
75 Ok(follow.clone())
76 }
77}