mirror of
https://github.com/zhom/donutbrowser.git
synced 2026-09-22 17:30:52 +02:00
fix: adjust download logic to work with latest firefox cdn
This commit is contained in:
@@ -255,9 +255,7 @@ pub fn is_browser_version_nightly(
|
|||||||
// This will be handled in the API parsing, so this fallback is for cached versions
|
// This will be handled in the API parsing, so this fallback is for cached versions
|
||||||
is_nightly_version(version)
|
is_nightly_version(version)
|
||||||
}
|
}
|
||||||
"mullvad-browser" | "tor-browser" => {
|
"mullvad-browser" | "tor-browser" => is_nightly_version(version),
|
||||||
is_nightly_version(version)
|
|
||||||
}
|
|
||||||
"chromium" => {
|
"chromium" => {
|
||||||
// Chromium builds are generally stable snapshots
|
// Chromium builds are generally stable snapshots
|
||||||
false
|
false
|
||||||
|
|||||||
@@ -435,11 +435,16 @@ impl BrowserVersionService {
|
|||||||
|
|
||||||
match browser {
|
match browser {
|
||||||
"firefox" => {
|
"firefox" => {
|
||||||
let os_param = match (&os[..], &arch[..]) {
|
let (platform_path, filename, is_archive) = match (&os[..], &arch[..]) {
|
||||||
("windows", _) => "win64",
|
("windows", "x64") => ("win64", format!("Firefox Setup {version}.exe"), false),
|
||||||
("linux", "x64") => "linux64",
|
("windows", "arm64") => (
|
||||||
("linux", "arm64") => "linux64-aarch64",
|
"win64-aarch64",
|
||||||
("macos", _) => "osx",
|
format!("Firefox Setup {version}.exe"),
|
||||||
|
false,
|
||||||
|
),
|
||||||
|
("linux", "x64") => ("linux-x86_64", format!("firefox-{version}.tar.bz2"), true),
|
||||||
|
("linux", "arm64") => ("linux-aarch64", format!("firefox-{version}.tar.bz2"), true),
|
||||||
|
("macos", _) => ("mac", format!("Firefox {version}.dmg"), true),
|
||||||
_ => {
|
_ => {
|
||||||
return Err(
|
return Err(
|
||||||
format!("Unsupported platform/architecture for Firefox: {os}/{arch}").into(),
|
format!("Unsupported platform/architecture for Firefox: {os}/{arch}").into(),
|
||||||
@@ -447,27 +452,25 @@ impl BrowserVersionService {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let (filename, is_archive) = match os.as_str() {
|
|
||||||
"windows" => (format!("firefox-{version}.exe"), false),
|
|
||||||
"linux" => (format!("firefox-{version}.tar.xz"), true),
|
|
||||||
"macos" => (format!("firefox-{version}.dmg"), true),
|
|
||||||
_ => return Err(format!("Unsupported platform for Firefox: {os}").into()),
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok(DownloadInfo {
|
Ok(DownloadInfo {
|
||||||
url: format!(
|
url: format!(
|
||||||
"https://download.mozilla.org/?product=firefox-{version}&os={os_param}&lang=en-US"
|
"https://download-installer.cdn.mozilla.net/pub/firefox/releases/{version}/{platform_path}/en-US/{filename}"
|
||||||
),
|
),
|
||||||
filename,
|
filename,
|
||||||
is_archive,
|
is_archive,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
"firefox-developer" => {
|
"firefox-developer" => {
|
||||||
let os_param = match (&os[..], &arch[..]) {
|
let (platform_path, filename, is_archive) = match (&os[..], &arch[..]) {
|
||||||
("windows", _) => "win64",
|
("windows", "x64") => ("win64", format!("Firefox Setup {version}.exe"), false),
|
||||||
("linux", "x64") => "linux64",
|
("windows", "arm64") => (
|
||||||
("linux", "arm64") => "linux64-aarch64",
|
"win64-aarch64",
|
||||||
("macos", _) => "osx",
|
format!("Firefox Setup {version}.exe"),
|
||||||
|
false,
|
||||||
|
),
|
||||||
|
("linux", "x64") => ("linux-x86_64", format!("firefox-{version}.tar.bz2"), true),
|
||||||
|
("linux", "arm64") => ("linux-aarch64", format!("firefox-{version}.tar.bz2"), true),
|
||||||
|
("macos", _) => ("mac", format!("Firefox {version}.dmg"), true),
|
||||||
_ => {
|
_ => {
|
||||||
return Err(
|
return Err(
|
||||||
format!("Unsupported platform/architecture for Firefox Developer: {os}/{arch}")
|
format!("Unsupported platform/architecture for Firefox Developer: {os}/{arch}")
|
||||||
@@ -476,16 +479,9 @@ impl BrowserVersionService {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let (filename, is_archive) = match os.as_str() {
|
|
||||||
"windows" => (format!("firefox-developer-{version}.exe"), false),
|
|
||||||
"linux" => (format!("firefox-developer-{version}.tar.xz"), true),
|
|
||||||
"macos" => (format!("firefox-developer-{version}.dmg"), true),
|
|
||||||
_ => return Err(format!("Unsupported platform for Firefox Developer: {os}").into()),
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok(DownloadInfo {
|
Ok(DownloadInfo {
|
||||||
url: format!(
|
url: format!(
|
||||||
"https://download.mozilla.org/?product=firefox-devedition-{version}&os={os_param}&lang=en-US"
|
"https://download-installer.cdn.mozilla.net/pub/devedition/releases/{version}/{platform_path}/en-US/{filename}"
|
||||||
),
|
),
|
||||||
filename,
|
filename,
|
||||||
is_archive,
|
is_archive,
|
||||||
@@ -1479,16 +1475,24 @@ mod tests {
|
|||||||
|
|
||||||
// Test Firefox
|
// Test Firefox
|
||||||
let firefox_info = service.get_download_info("firefox", "139.0").unwrap();
|
let firefox_info = service.get_download_info("firefox", "139.0").unwrap();
|
||||||
assert_eq!(firefox_info.filename, "firefox-139.0.dmg");
|
assert_eq!(firefox_info.filename, "Firefox 139.0.dmg");
|
||||||
assert!(firefox_info.url.contains("firefox-139.0"));
|
assert!(firefox_info
|
||||||
|
.url
|
||||||
|
.contains("download-installer.cdn.mozilla.net"));
|
||||||
|
assert!(firefox_info.url.contains("/pub/firefox/releases/139.0/"));
|
||||||
assert!(firefox_info.is_archive);
|
assert!(firefox_info.is_archive);
|
||||||
|
|
||||||
// Test Firefox Developer
|
// Test Firefox Developer
|
||||||
let firefox_dev_info = service
|
let firefox_dev_info = service
|
||||||
.get_download_info("firefox-developer", "139.0b1")
|
.get_download_info("firefox-developer", "139.0b1")
|
||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(firefox_dev_info.filename, "firefox-developer-139.0b1.dmg");
|
assert_eq!(firefox_dev_info.filename, "Firefox 139.0b1.dmg");
|
||||||
assert!(firefox_dev_info.url.contains("devedition-139.0b1"));
|
assert!(firefox_dev_info
|
||||||
|
.url
|
||||||
|
.contains("download-installer.cdn.mozilla.net"));
|
||||||
|
assert!(firefox_dev_info
|
||||||
|
.url
|
||||||
|
.contains("/pub/devedition/releases/139.0b1/"));
|
||||||
assert!(firefox_dev_info.is_archive);
|
assert!(firefox_dev_info.is_archive);
|
||||||
|
|
||||||
// Test Mullvad Browser
|
// Test Mullvad Browser
|
||||||
|
|||||||
Reference in New Issue
Block a user