fixes
This commit is contained in:
84
src/util/hoster_proxy.rs
Normal file
84
src/util/hoster_proxy.rs
Normal file
@@ -0,0 +1,84 @@
|
||||
use url::Url;
|
||||
|
||||
use crate::providers::{build_proxy_url, strip_url_scheme};
|
||||
use crate::videos::ServerOptions;
|
||||
|
||||
const DOODSTREAM_HOSTS: &[&str] = &[
|
||||
"turboplayers.xyz",
|
||||
"www.turboplayers.xyz",
|
||||
"trailerhg.xyz",
|
||||
"www.trailerhg.xyz",
|
||||
"streamhg.com",
|
||||
"www.streamhg.com",
|
||||
];
|
||||
|
||||
pub fn proxy_name_for_url(url: &str) -> Option<&'static str> {
|
||||
let parsed = Url::parse(url).ok()?;
|
||||
let host = parsed.host_str()?.to_ascii_lowercase();
|
||||
|
||||
if DOODSTREAM_HOSTS.contains(&host.as_str()) {
|
||||
return Some("doodstream");
|
||||
}
|
||||
|
||||
None
|
||||
}
|
||||
|
||||
pub fn rewrite_hoster_url(options: &ServerOptions, url: &str) -> String {
|
||||
match proxy_name_for_url(url) {
|
||||
Some(proxy_name) => build_proxy_url(options, proxy_name, &strip_url_scheme(url)),
|
||||
None => url.to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::{proxy_name_for_url, rewrite_hoster_url};
|
||||
use crate::videos::ServerOptions;
|
||||
|
||||
fn options() -> ServerOptions {
|
||||
ServerOptions {
|
||||
featured: None,
|
||||
category: None,
|
||||
sites: None,
|
||||
filter: None,
|
||||
language: None,
|
||||
public_url_base: Some("https://example.com".to_string()),
|
||||
requester: None,
|
||||
network: None,
|
||||
stars: None,
|
||||
categories: None,
|
||||
duration: None,
|
||||
sort: None,
|
||||
sexuality: None,
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn matches_doodstream_family_hosts() {
|
||||
assert_eq!(
|
||||
proxy_name_for_url("https://turboplayers.xyz/t/69bdfb21cc640"),
|
||||
Some("doodstream")
|
||||
);
|
||||
assert_eq!(
|
||||
proxy_name_for_url("https://trailerhg.xyz/e/ttdc7a6qpskt"),
|
||||
Some("doodstream")
|
||||
);
|
||||
assert_eq!(
|
||||
proxy_name_for_url("https://streamhg.com/about"),
|
||||
Some("doodstream")
|
||||
);
|
||||
assert_eq!(proxy_name_for_url("https://example.com/video"), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rewrites_known_hoster_urls_to_proxy_urls() {
|
||||
assert_eq!(
|
||||
rewrite_hoster_url(&options(), "https://turboplayers.xyz/t/69bdfb21cc640"),
|
||||
"https://example.com/proxy/doodstream/turboplayers.xyz/t/69bdfb21cc640"
|
||||
);
|
||||
assert_eq!(
|
||||
rewrite_hoster_url(&options(), "https://example.com/video"),
|
||||
"https://example.com/video"
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user