Skip to content

Commit cbe4b3a

Browse files
committed
[rust] Normalize architecture strings sent to Plausible (#15970)
1 parent ce6f840 commit cbe4b3a

File tree

2 files changed

+33
-8
lines changed

2 files changed

+33
-8
lines changed

rust/src/config.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
use crate::config::OS::{LINUX, MACOS, WINDOWS};
1919
use crate::shell::run_shell_command_by_os;
2020
use crate::{
21-
default_cache_folder, format_one_arg, path_to_string, Command, ENV_PROCESSOR_ARCHITECTURE,
22-
REQUEST_TIMEOUT_SEC, UNAME_COMMAND,
21+
default_cache_folder, format_one_arg, path_to_string, Command, ARCH_ARM7L,
22+
ENV_PROCESSOR_ARCHITECTURE, REQUEST_TIMEOUT_SEC, UNAME_COMMAND,
2323
};
24-
use crate::{ARCH_AMD64, ARCH_ARM64, ARCH_X86, TTL_SEC};
24+
use crate::{ARCH_ARM64, ARCH_X64, ARCH_X86, TTL_SEC};
2525
use anyhow::anyhow;
2626
use anyhow::Error;
2727
use std::cell::RefCell;
@@ -88,7 +88,7 @@ impl ManagerConfig {
8888
} else if _architecture.contains("ARM") {
8989
ARCH_ARM64.to_string()
9090
} else {
91-
ARCH_AMD64.to_string()
91+
ARCH_X64.to_string()
9292
}
9393
} else {
9494
let uname_a_command = Command::new_single(format_one_arg(UNAME_COMMAND, "a"));
@@ -181,14 +181,16 @@ pub enum ARCH {
181181
X32,
182182
X64,
183183
ARM64,
184+
ARMV7,
184185
}
185186

186187
impl ARCH {
187188
pub fn to_str_vector(&self) -> Vec<&str> {
188189
match self {
189190
ARCH::X32 => vec![ARCH_X86, "i386", "x32"],
190-
ARCH::X64 => vec![ARCH_AMD64, "x86_64", "x64", "i686", "ia64"],
191-
ARCH::ARM64 => vec![ARCH_ARM64, "aarch64", "arm", "arm64"],
191+
ARCH::X64 => vec![ARCH_X64, "amd64", "x64", "i686", "ia64"],
192+
ARCH::ARM64 => vec![ARCH_ARM64, "aarch64", "arm"],
193+
ARCH::ARMV7 => vec![ARCH_ARM7L, "armv7l"],
192194
}
193195
}
194196

rust/src/lib.rs

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
// under the License.
1717

1818
use crate::chrome::{ChromeManager, CHROMEDRIVER_NAME, CHROME_NAME};
19+
use crate::config::ARCH::{ARM64, ARMV7, X32, X64};
1920
use crate::config::OS::{MACOS, WINDOWS};
2021
use crate::config::{str_to_os, ManagerConfig};
2122
use crate::downloads::download_to_tmp_folder;
@@ -98,8 +99,10 @@ pub const ENV_LOCALAPPDATA: &str = "LOCALAPPDATA";
9899
pub const ENV_PROCESSOR_ARCHITECTURE: &str = "PROCESSOR_ARCHITECTURE";
99100
pub const ENV_X86: &str = " (x86)";
100101
pub const ARCH_X86: &str = "x86";
101-
pub const ARCH_AMD64: &str = "amd64";
102+
pub const ARCH_X64: &str = "x86_64";
102103
pub const ARCH_ARM64: &str = "arm64";
104+
pub const ARCH_ARM7L: &str = "arm7l";
105+
pub const ARCH_OTHER: &str = "other";
103106
pub const TTL_SEC: u64 = 3600;
104107
pub const UNAME_COMMAND: &str = "uname -{}";
105108
pub const ESCAPE_COMMAND: &str = r#"printf %q "{}""#;
@@ -897,7 +900,10 @@ pub trait SeleniumManager {
897900
browser: self.get_browser_name().to_ascii_lowercase(),
898901
browser_version: self.get_browser_version().to_ascii_lowercase(),
899902
os: self.get_os().to_ascii_lowercase(),
900-
arch: self.get_arch().to_ascii_lowercase(),
903+
arch: self
904+
.get_normalized_arch()
905+
.unwrap_or(ARCH_OTHER)
906+
.to_ascii_lowercase(),
901907
lang: self.get_language_binding().to_ascii_lowercase(),
902908
selenium_version: self.get_selenium_version().to_ascii_lowercase(),
903909
};
@@ -1291,6 +1297,23 @@ pub trait SeleniumManager {
12911297
self.get_config().arch.as_str()
12921298
}
12931299

1300+
fn get_normalized_arch(&self) -> Result<&str, Error> {
1301+
let arch = self.get_arch();
1302+
if X32.is(arch) {
1303+
Ok(ARCH_X86)
1304+
} else if X64.is(arch) {
1305+
Ok(ARCH_X64)
1306+
} else if ARM64.is(arch) {
1307+
Ok(ARCH_ARM64)
1308+
} else if ARMV7.is(arch) {
1309+
Ok(ARCH_ARM7L)
1310+
} else {
1311+
let err_msg = format!("Unsupported architecture: {}", arch);
1312+
self.get_logger().warn(err_msg.clone());
1313+
Err(anyhow!(err_msg))
1314+
}
1315+
}
1316+
12941317
fn set_arch(&mut self, arch: String) {
12951318
if !arch.is_empty() {
12961319
self.get_config_mut().arch = arch;

0 commit comments

Comments
 (0)