Skip to content

Commit 0276c44

Browse files
committed
[rust] Refactor logic to discover driver version in Firefox module using match
1 parent 59e57cf commit 0276c44

File tree

1 file changed

+48
-45
lines changed

1 file changed

+48
-45
lines changed

rust/src/firefox.rs

Lines changed: 48 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -216,54 +216,57 @@ impl SeleniumManager for FirefoxManager {
216216
_ => {
217217
self.assert_online_or_err(OFFLINE_REQUEST_ERR_MSG)?;
218218

219-
let driver_releases_result = parse_json_from_url::<GeckodriverReleases>(
219+
let driver_version = match parse_json_from_url::<GeckodriverReleases>(
220220
self.get_http_client(),
221221
DRIVER_VERSIONS_URL.to_string(),
222-
);
223-
let driver_version = if driver_releases_result.is_ok() {
224-
let driver_releases = driver_releases_result.unwrap();
225-
let major_browser_version_int =
226-
major_browser_version.parse::<u32>().unwrap_or_default();
227-
let filtered_versions: Vec<String> = driver_releases
228-
.geckodriver_releases
229-
.into_iter()
230-
.filter(|r| {
231-
major_browser_version_int >= r.min_firefox_version
232-
&& (r.max_firefox_version.is_none()
233-
|| (r.max_firefox_version.is_some()
234-
&& major_browser_version_int
235-
<= r.max_firefox_version.unwrap()))
236-
})
237-
.map(|r| r.geckodriver_version)
238-
.collect();
239-
self.log.debug(format!(
240-
"Valid {} versions for {} {}: {:?}",
241-
&self.driver_name,
242-
&self.browser_name,
243-
major_browser_version_int,
244-
filtered_versions
245-
));
246-
if filtered_versions.is_empty() {
247-
return Err(anyhow!(format!(
248-
"Not valid {} version found for {} {}",
249-
&self.driver_name, &self.browser_name, major_browser_version_int
250-
)));
251-
} else {
252-
filtered_versions.first().unwrap().to_string()
222+
) {
223+
Ok(driver_releases) => {
224+
let major_browser_version_int =
225+
major_browser_version.parse::<u32>().unwrap_or_default();
226+
let filtered_versions: Vec<String> = driver_releases
227+
.geckodriver_releases
228+
.into_iter()
229+
.filter(|r| {
230+
major_browser_version_int >= r.min_firefox_version
231+
&& (r.max_firefox_version.is_none()
232+
|| (r.max_firefox_version.is_some()
233+
&& major_browser_version_int
234+
<= r.max_firefox_version.unwrap()))
235+
})
236+
.map(|r| r.geckodriver_version)
237+
.collect();
238+
self.log.debug(format!(
239+
"Valid {} versions for {} {}: {:?}",
240+
&self.driver_name,
241+
&self.browser_name,
242+
major_browser_version_int,
243+
filtered_versions
244+
));
245+
if filtered_versions.is_empty() {
246+
return Err(anyhow!(format!(
247+
"Not valid {} version found for {} {}",
248+
&self.driver_name, &self.browser_name, major_browser_version_int
249+
)));
250+
} else {
251+
filtered_versions.first().unwrap().to_string()
252+
}
253+
}
254+
Err(err) => {
255+
self.log.warn(format!(
256+
"Problem reading {} versions: {}. Using latest {} version",
257+
&self.driver_name, err, &self.driver_name,
258+
));
259+
let latest_url = format!(
260+
"{}{}",
261+
self.get_driver_mirror_url_or_default(DRIVER_URL),
262+
LATEST_RELEASE
263+
);
264+
read_redirect_from_link(
265+
self.get_http_client(),
266+
latest_url,
267+
self.get_logger(),
268+
)?
253269
}
254-
} else {
255-
self.log.warn(format!(
256-
"Problem reading {} versions: {}. Using latest {} version",
257-
&self.driver_name,
258-
driver_releases_result.err().unwrap(),
259-
&self.driver_name,
260-
));
261-
let latest_url = format!(
262-
"{}{}",
263-
self.get_driver_mirror_url_or_default(DRIVER_URL),
264-
LATEST_RELEASE
265-
);
266-
read_redirect_from_link(self.get_http_client(), latest_url, self.get_logger())?
267270
};
268271

269272
let driver_ttl = self.get_ttl();

0 commit comments

Comments
 (0)