diff --git a/src/app.rs b/src/app.rs index a55c297..d5c86f1 100644 --- a/src/app.rs +++ b/src/app.rs @@ -283,6 +283,10 @@ impl State { let task_state = Arc::clone(&state); self::task::stream_status::start_task(task_state).await; + // start token refresh task + let task_state = Arc::clone(&state); + self::task::tokens::start_task(task_state).await; + println!("initialised"); Ok(state) diff --git a/src/app/task/mod.rs b/src/app/task/mod.rs index 8d62216..693a3ff 100644 --- a/src/app/task/mod.rs +++ b/src/app/task/mod.rs @@ -1 +1,2 @@ pub mod stream_status; +pub mod tokens; diff --git a/src/app/task/tokens.rs b/src/app/task/tokens.rs new file mode 100644 index 0000000..581486f --- /dev/null +++ b/src/app/task/tokens.rs @@ -0,0 +1,19 @@ +use chrono::Duration; +use crate::app::State; +use std::sync::Arc; + +pub async fn start_task(state: Arc) { + tokio::task::spawn(async move { + loop { + if let Err(e) = state.twitch.bot_token().await { + eprintln!("could not get bot token: {:?}", e); + } + + if let Err(e) = state.twitch.user_token().await { + eprintln!("could not get user token: {:?}", e); + } + + tokio::time::sleep(Duration::minutes(15).to_std().unwrap()).await; + } + }); +}