diff --git a/src/client.rs b/src/client.rs index 590777c..e22328c 100644 --- a/src/client.rs +++ b/src/client.rs @@ -5,6 +5,7 @@ use hyper::client::HttpConnector; use hyper::{body, body::Buf, client, header, Body, Client, Method, Request, Response, Uri}; use hyper_rustls::HttpsConnector; use libflate::gzip; +use log::error; use once_cell::sync::Lazy; use percent_encoding::{percent_encode, CONTROLS}; use serde_json::Value; @@ -13,7 +14,7 @@ use std::{io, result::Result}; use tokio::sync::RwLock; use crate::dbg_msg; -use crate::oauth::{token_daemon, Oauth}; +use crate::oauth::{force_refresh_token, token_daemon, Oauth}; use crate::server::RequestExt; use crate::utils::format_url; @@ -335,6 +336,8 @@ pub async fn json(path: String, quarantine: bool) -> Result { } } Err(e) => { + error!("Got a bad response from reddit {e} - forcing a token refresh. Status code: {status}"); + let _ = force_refresh_token().await; if status.is_server_error() { Err("Reddit is having issues, check if there's an outage".to_string()) } else { diff --git a/src/oauth.rs b/src/oauth.rs index 101dc74..cea7693 100644 --- a/src/oauth.rs +++ b/src/oauth.rs @@ -129,6 +129,11 @@ pub async fn token_daemon() { } } } + +pub async fn force_refresh_token() { + OAUTH_CLIENT.write().await.refresh().await; +} + #[derive(Debug, Clone, Default)] struct Device { oauth_id: String,