From 5ae1715fb4b1a9da2d3a68d1ba11a4963c20e14d Mon Sep 17 00:00:00 2001 From: phoenix Date: Mon, 22 Jun 2026 23:01:03 -0400 Subject: [PATCH] Adding token related code --- src/main.rs | 26 +++++++++++++-------- src/service/mod.rs | 58 ++++++++-------------------------------------- 2 files changed, 26 insertions(+), 58 deletions(-) diff --git a/src/main.rs b/src/main.rs index ebd42ac..a1a87c3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -30,21 +30,27 @@ async fn main() -> Result<(), Box> { let mut svc = catapult::service::core::Service { app: app.clone(), - // Use a pointer - token: token.clone(), + token: token, }; loop { - // catapult::service::do_the_work(&app).await; - let refresh_token = match auth.get_refresh_token(&token).await { - Ok(refresh) => refresh, - Err(err) => { - eprintln!("Error: {err:?}"); - std::process::exit(-1); + // TODO: Need to update textsender_models. The token module needs updating. + // The LoginResult needs expires_in populated + if catapult::service::auth::has_token_expired(&svc.token).await { + match auth.get_refresh_token(&svc.token).await { + Ok(refresh) => { + println!("Refresh token: {refresh:?}"); + svc.token = refresh; + } + Err(err) => { + eprintln!("Error: {err:?}"); + std::process::exit(-1); + } } - }; - println!("Refresh token: {refresh_token:?}"); + } + svc.do_the_work().await; + tokio::time::sleep(tokio::time::Duration::from_secs( catapult::app::SECONDS_TO_SLEEP, )) diff --git a/src/service/mod.rs b/src/service/mod.rs index a3b4230..20d0d85 100644 --- a/src/service/mod.rs +++ b/src/service/mod.rs @@ -112,53 +112,15 @@ pub mod auth { } pub async fn has_token_expired(token: &textsender_models::token::LoginResult) -> bool { - todo!("Need to finish this"); - false + let now = time::OffsetDateTime::now_utc(); + let expire = match time::OffsetDateTime::from_unix_timestamp(token.expires_in) { + Ok(res) => res, + Err(err) => { + eprintln!("Error: {err:?}"); + return false; + } + }; + + now > expire } } - - -/* -type refreshTokenRequest struct { - AccessToken string `json:"access_token"` -} - -func (a *Auth) GetRefreshToken(tok *token.Login) (*token.Login, error) { - req := refreshTokenRequest{AccessToken: tok.AccessToken} - - jsonData, err := json.Marshal(req) - if err != nil { - return nil, err - } - - resp, err := http.Post(fmt.Sprintf("%s/api/v1/token/refresh", a.Application.AuthUrl), "application/json", bytes.NewBuffer(jsonData)) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - var r tokenResponse - err = json.NewDecoder(resp.Body).Decode(&r) - if err != nil { - return nil, err - } else { - if len(r.Data) == 0 { - return nil, nil - } else { - return r.Data[0], nil - } - } -} - -func (s *Auth) TokenExpired(tok *token.Login) bool { - now := time.Now() - expiredTime := time.Unix(tok.ExpiresIn, 0) - - if now.After(expiredTime) { - return true - } else { - return false - } -} - * - */