We assume /r/rust Just Works because it doesn't like Github

pull/1628/head
Tom Parker-Shemilt 5 months ago
parent 0345c23b72
commit a5b1684017

@ -38,6 +38,10 @@ fn override_stars(level: u32, text: &str) -> Option<u32> {
}
lazy_static! {
// We don't explicitly check these, because they just bug out in Github. We're _hoping_ they don't go away!
static ref ASSUME_WORKS: Vec<String> = vec![
"https://www.reddit.com/r/rust/".to_string()
];
// Overrides for popularity count, each needs a good reason (i.e. downloads/stars we don't support automatic counting of)
// Each is a URL that's "enough" for an item to pass the popularity checks
static ref POPULARITY_OVERRIDES: Vec<String> = vec![
@ -247,15 +251,19 @@ async fn get_downloads(github_url: &str) -> Option<u64> {
fn get_url_core(url: String) -> BoxFuture<'static, (String, Result<(), CheckerError>)> {
async move {
let mut res = Err(CheckerError::NotTried);
if ASSUME_WORKS.contains(&url) {
info!("We assume {} just works...", url);
return (url, Ok(()));
}
if env::var("USERNAME_FOR_GITHUB").is_ok() && env::var("TOKEN_FOR_GITHUB").is_ok() && GITHUB_REPO_REGEX.is_match(&url) {
let rewritten = GITHUB_REPO_REGEX.replace_all(&url, "https://api.github.com/repos/$org/$repo");
info!("Replacing {} with {} to workaround rate limits on Github", url, rewritten);
let (_new_url, res) = get_url_core(rewritten.to_string()).await;
return (url, res);
}
let mut res: Result<(), CheckerError> = Err(CheckerError::NotTried);
for _ in 0..5u8 {
debug!("Running {}", url);
if env::var("USERNAME_FOR_GITHUB").is_ok() && env::var("TOKEN_FOR_GITHUB").is_ok() && GITHUB_REPO_REGEX.is_match(&url) {
let rewritten = GITHUB_REPO_REGEX.replace_all(&url, "https://api.github.com/repos/$org/$repo");
info!("Replacing {} with {} to workaround rate limits on Github", url, rewritten);
let (_new_url, res) = get_url_core(rewritten.to_string()).await;
return (url, res);
}
let mut req = CLIENT
.get(&url)
.header(header::ACCEPT, "image/svg+xml, text/html, */*;q=0.8");

Loading…
Cancel
Save