chore: add logs (#138)

This commit is contained in:
Nathan.fooo 2023-10-25 10:14:41 +08:00 committed by GitHub
parent 67b3741a3d
commit 0b9d7e6d6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 8 deletions

View File

@ -29,10 +29,10 @@ use shared_entity::dto::workspace_dto::{
use shared_entity::error_code::url_missing_param;
use shared_entity::error_code::ErrorCode;
use std::sync::Arc;
use std::time::SystemTime;
use std::time::{Duration, SystemTime};
use tokio::fs::File;
use tokio::io::AsyncReadExt;
use tracing::instrument;
use tracing::{event, instrument};
use url::Url;
use gotrue_entity::dto::SignUpResponse::{Authenticated, NotAuthenticated};
@ -81,7 +81,7 @@ impl Client {
}
#[instrument(level = "debug", skip_all, err)]
pub fn set_token(&self, token: &str) -> Result<(), AppError> {
pub fn restore_token(&self, token: &str) -> Result<(), AppError> {
if token.is_empty() {
return Err(AppError::new(ErrorCode::OAuthError, "Empty token"));
}
@ -321,7 +321,15 @@ impl Client {
pub fn token_expires_at(&self) -> Result<i64, AppError> {
match &self.token.try_read() {
None => Err(AppError::new(ErrorCode::Unhandled, "Failed to read token")),
Some(token) => Ok(token.as_ref().ok_or(ErrorCode::NotLoggedIn)?.expires_at),
Some(token) => Ok(
token
.as_ref()
.ok_or(AppError::new(
ErrorCode::NotLoggedIn,
"fail to get expires_at",
))?
.expires_at,
),
}
}
@ -334,12 +342,15 @@ impl Client {
/// - `Err(AppError)`: An `AppError` indicating either an inability to read the token or that the user is not logged in.
///
pub fn access_token(&self) -> Result<String, AppError> {
match &self.token.try_read() {
match &self.token.try_read_for(Duration::from_secs(2)) {
None => Err(AppError::new(ErrorCode::Unhandled, "Failed to read token")),
Some(token) => Ok(
token
.as_ref()
.ok_or(ErrorCode::NotLoggedIn)?
.ok_or(AppError::new(
ErrorCode::NotLoggedIn,
"fail to get access token. Token is empty",
))?
.access_token
.clone(),
),
@ -524,7 +535,10 @@ impl Client {
.token
.read()
.as_ref()
.ok_or(AppError::new(ErrorCode::NotLoggedIn, "No access token"))?
.ok_or(AppError::new(
ErrorCode::NotLoggedIn,
"fail to refresh user token",
))?
.refresh_token
.as_str()
.to_owned();
@ -538,6 +552,7 @@ impl Client {
Ok(())
},
Err(err) => {
event!(tracing::Level::ERROR, "refresh token failed: {}", err);
self.token.write().unset();
Err(AppError::from(err))
},
@ -561,6 +576,7 @@ impl Client {
#[instrument(level = "debug", skip_all, err)]
pub async fn sign_out(&self) -> Result<(), AppError> {
self.gotrue_client.logout(&self.access_token()?).await?;
self.token.write().unset();
Ok(())
}

View File

@ -41,13 +41,13 @@ impl ClientToken {
///
/// - `token`: The new `AccessTokenResponse` to be set.
pub(crate) fn set(&mut self, new_token: AccessTokenResponse) {
tracing::trace!("Set new access token: {:?}", new_token);
let is_new = match &self.token {
None => true,
Some(old_token) => old_token.access_token != new_token.access_token,
};
self.token = Some(new_token);
if is_new {
tracing::trace!("Set new access token: {:?}", self.token);
let _ = self.sender.send(TokenState::Refresh);
}
}