Adding token related code
This commit is contained in:
+16
-10
@@ -30,21 +30,27 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
|
|
||||||
let mut svc = catapult::service::core::Service {
|
let mut svc = catapult::service::core::Service {
|
||||||
app: app.clone(),
|
app: app.clone(),
|
||||||
// Use a pointer
|
token: token,
|
||||||
token: token.clone(),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
// catapult::service::do_the_work(&app).await;
|
// TODO: Need to update textsender_models. The token module needs updating.
|
||||||
let refresh_token = match auth.get_refresh_token(&token).await {
|
// The LoginResult needs expires_in populated
|
||||||
Ok(refresh) => refresh,
|
if catapult::service::auth::has_token_expired(&svc.token).await {
|
||||||
Err(err) => {
|
match auth.get_refresh_token(&svc.token).await {
|
||||||
eprintln!("Error: {err:?}");
|
Ok(refresh) => {
|
||||||
std::process::exit(-1);
|
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;
|
svc.do_the_work().await;
|
||||||
|
|
||||||
tokio::time::sleep(tokio::time::Duration::from_secs(
|
tokio::time::sleep(tokio::time::Duration::from_secs(
|
||||||
catapult::app::SECONDS_TO_SLEEP,
|
catapult::app::SECONDS_TO_SLEEP,
|
||||||
))
|
))
|
||||||
|
|||||||
+10
-48
@@ -112,53 +112,15 @@ pub mod auth {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn has_token_expired(token: &textsender_models::token::LoginResult) -> bool {
|
pub async fn has_token_expired(token: &textsender_models::token::LoginResult) -> bool {
|
||||||
todo!("Need to finish this");
|
let now = time::OffsetDateTime::now_utc();
|
||||||
false
|
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|||||||
Reference in New Issue
Block a user