Skip to main content

farcaster_rs/account/auth/
revoke_session_token.rs

1use serde_json::{json, Value};
2
3use crate::types::account::auth::revoke::RevokedKeyRoot;
4use crate::{constants::merkle::API_ROOT, types::account::auth::secret::SecretToken, Farcaster};
5use chrono::Utc;
6use std::error::Error;
7
8impl Farcaster {
9    /// Best not to use this function on its own, as the Account struct has a method that does this in a clean way
10    /// i.e. ``farcaster.account.revoke_auth_token().await?;``
11    pub async fn revoke_session_token(
12        token: &SecretToken,
13    ) -> Result<RevokedKeyRoot, Box<dyn Error>> {
14        let payload: Value = json!({
15            "method": "revokeToken",
16            "params": {
17                "timestamp": Utc::now().timestamp_millis()
18            }
19        });
20
21        let revoke_reqwest = reqwest::Client::new()
22            .delete(format!("{}/v2/auth", API_ROOT))
23            .header("Content-Type", "application/json")
24            .header("Authorization", &token.secret)
25            .json(&payload)
26            .send()
27            .await?
28            .text()
29            .await?;
30
31        let revoke: RevokedKeyRoot = serde_json::from_str(&revoke_reqwest)?;
32
33        Ok(revoke)
34    }
35}