Skip to main content

xet_data/processing/migration_tool/
hub_client_token_refresher.rs

1use std::sync::Arc;
2
3use xet_client::cas_client::auth::{AuthError, TokenInfo, TokenRefresher};
4use xet_client::hub_client::{HubClient, Operation};
5
6pub struct HubClientTokenRefresher {
7    pub operation: Operation,
8    pub client: Arc<HubClient>,
9}
10
11#[cfg_attr(not(target_family = "wasm"), async_trait::async_trait)]
12#[cfg_attr(target_family = "wasm", async_trait::async_trait(?Send))]
13impl TokenRefresher for HubClientTokenRefresher {
14    async fn refresh(&self) -> std::result::Result<TokenInfo, AuthError> {
15        let jwt_info = self
16            .client
17            .get_cas_jwt(self.operation)
18            .await
19            .map_err(AuthError::token_refresh_failure)?;
20
21        Ok((jwt_info.access_token, jwt_info.exp))
22    }
23}