redgifs fix
This commit is contained in:
@@ -287,9 +287,11 @@ impl RedgifsProvider {
|
||||
}
|
||||
|
||||
async fn authed_get(&self, url: &str, options: &ServerOptions) -> Result<String> {
|
||||
for attempt in 0..2 {
|
||||
let force_refresh = attempt > 0;
|
||||
const ATTEMPTS: u32 = 3;
|
||||
let mut force_refresh = false;
|
||||
for attempt in 0..ATTEMPTS {
|
||||
let token = self.redgifs_token(options, force_refresh).await?;
|
||||
force_refresh = false;
|
||||
let mut requester = requester_or_default(options, CHANNEL_ID, "authed_get");
|
||||
let response = requester
|
||||
.get_raw_with_headers(
|
||||
@@ -302,7 +304,17 @@ impl RedgifsProvider {
|
||||
.await
|
||||
.map_err(|error| Error::from(format!("request failed for {url}: {error}")))?;
|
||||
|
||||
if response.status().as_u16() == 401 && attempt == 0 {
|
||||
let status = response.status().as_u16();
|
||||
let last_attempt = attempt + 1 == ATTEMPTS;
|
||||
if status == 401 && !last_attempt {
|
||||
force_refresh = true;
|
||||
continue;
|
||||
}
|
||||
// RedGifs rate-limits bursty search/browse traffic with 429s; retry
|
||||
// the same token after a short backoff instead of surfacing an
|
||||
// empty result set to the client.
|
||||
if status == 429 && !last_attempt {
|
||||
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
|
||||
continue;
|
||||
}
|
||||
if !response.status().is_success() {
|
||||
|
||||
Reference in New Issue
Block a user