MCPcopy Create free account
hub / github.com/Moosync/Moosync / refresh_login

Function refresh_login

src-tauri/src/providers/common.rs:92–128  ·  view source on GitHub ↗
(
    key: &str,
    client: OAuth2Client,
    app: &AppHandle,
)

Source from the content-addressed store, hash-verified

90
91#[tracing::instrument(level = "debug", skip(key, client, app))]
92pub async fn refresh_login(
93 key: &str,
94 client: OAuth2Client,
95 app: &AppHandle,
96) -> Result<TokenHolder> {
97 let preferences: State<PreferenceConfig> = app.state();
98 let refresh_token: Result<String> = preferences.inner().get_secure(key.into());
99 if refresh_token.is_err() {
100 tracing::error!("Error fetching refresh token {:?}", refresh_token);
101 let preferences: State<PreferenceConfig> = app.state();
102 let res = preferences.inner().set_secure::<String>(key.into(), None);
103 tracing::info!("Set secure token: {:?}", res);
104 return Err(format!(
105 "Refresh token not found or corrupted: {:?}",
106 refresh_token.unwrap_err()
107 )
108 .into());
109 }
110
111 let refresh_token = refresh_token.unwrap();
112 if !refresh_token.is_empty() {
113 let res = client
114 .exchange_refresh_token(&RefreshToken::new(refresh_token.to_string()))
115 .request_async(async_http_client)
116 .await
117 .map_err(|err| match err {
118 oauth2::RequestTokenError::ServerResponse(e) => MoosyncError::String(e.to_string()),
119 oauth2::RequestTokenError::Request(_) => todo!(),
120 oauth2::RequestTokenError::Parse(_, _) => todo!(),
121 oauth2::RequestTokenError::Other(_) => todo!(),
122 })?;
123
124 return set_tokens(key, app, res, Some(refresh_token.to_string()));
125 }
126
127 Err("Refresh token not found".into())
128}
129
130#[allow(dead_code)]
131pub struct LoginArgs {

Callers 2

refresh_loginMethod · 0.85
refresh_loginMethod · 0.85

Calls 2

set_tokensFunction · 0.85
get_secureMethod · 0.45

Tested by

no test coverage detected