summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-09-13 16:14:02 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-09-13 16:14:02 +0800
commitb03c840683dd92f78c91ba48f0d1abd606bf0ff1 (patch)
tree5c7bd1da80fdb6587243f9f0af6076464c2bee25 /src
parent40099749a6b264593ad54032411f02df9967790c (diff)
httpconector: handle TOO_MANY_REQUESTS
Diffstat (limited to 'src')
-rw-r--r--src/client/connector/connectors/httpconnector.rs18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/client/connector/connectors/httpconnector.rs b/src/client/connector/connectors/httpconnector.rs
index 84596c9..5a5b0df 100644
--- a/src/client/connector/connectors/httpconnector.rs
+++ b/src/client/connector/connectors/httpconnector.rs
@@ -1,4 +1,5 @@
use crate::connector::*;
+use std::{thread::sleep, time::Duration};
pub(crate) struct HTTPConnector {
prev: String,
@@ -19,10 +20,19 @@ impl Connection for HTTPConnector {
fn update(&self) -> Option<Result<Self::Success, Self::Err>> {
let res = match reqwest::blocking::get(self.url.as_str()) {
- Ok(resp) => match resp.text() {
- Ok(text) => text,
- Err(e) => return Some(Err(e)),
- },
+ Ok(resp) => {
+ match resp.status() {
+ reqwest::StatusCode::TOO_MANY_REQUESTS(e) => {
+ sleep(Duration::from_secs(5));
+ return e;
+ }
+ status => return Some(Err(status)),
+ }
+ match resp.text() {
+ Ok(text) => text,
+ Err(e) => return Some(Err(e)),
+ }
+ }
Err(e) => return Some(Err(e)),
};