MCPcopy Create free account
hub / github.com/SeleniumHQ/selenium / request_driver_version

Method request_driver_version

rust/src/firefox.rs:222–315  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

220 }
221
222 fn request_driver_version(&mut self) -> Result<String, Error> {
223 let major_browser_version_binding = self.get_major_browser_version();
224 let major_browser_version = major_browser_version_binding.as_str();
225 let cache_path = self.get_cache_path()?;
226 let mut metadata = get_metadata(self.get_logger(), &cache_path);
227
228 match get_driver_version_from_metadata(
229 &metadata.drivers,
230 self.driver_name,
231 major_browser_version,
232 ) {
233 Some(driver_version) => {
234 self.log.trace(format!(
235 "Driver TTL is valid. Getting {} version from metadata",
236 &self.driver_name
237 ));
238 Ok(driver_version)
239 }
240 _ => {
241 self.assert_online_or_err(OFFLINE_REQUEST_ERR_MSG)?;
242
243 let driver_version_url =
244 self.get_driver_mirror_versions_url_or_default(DRIVER_VERSIONS_URL);
245 let driver_version = match parse_json_from_url::<GeckodriverReleases>(
246 self.get_http_client(),
247 &driver_version_url,
248 ) {
249 Ok(driver_releases) => {
250 let major_browser_version_int =
251 major_browser_version.parse::<u32>().unwrap_or_default();
252 let filtered_versions: Vec<String> = driver_releases
253 .geckodriver_releases
254 .into_iter()
255 .filter(|r| {
256 major_browser_version_int >= r.min_firefox_version
257 && (r.max_firefox_version.is_none()
258 || (r.max_firefox_version.is_some()
259 && major_browser_version_int
260 <= r.max_firefox_version.unwrap()))
261 })
262 .map(|r| r.geckodriver_version)
263 .collect();
264 self.log.debug(format!(
265 "Valid {} versions for {} {}: {:?}",
266 &self.driver_name,
267 &self.browser_name,
268 major_browser_version_int,
269 filtered_versions
270 ));
271 if filtered_versions.is_empty() {
272 return Err(anyhow!(format!(
273 "Not valid {} version found for {} {}. Check available versions at {}",
274 &self.driver_name,
275 &self.browser_name,
276 major_browser_version_int,
277 DRIVER_URL
278 )));
279 } else {

Callers

nothing calls this directly

Calls 15

get_metadataFunction · 0.85
read_redirect_from_linkFunction · 0.85
create_driver_metadataFunction · 0.85
write_metadataFunction · 0.85
get_cache_pathMethod · 0.80
traceMethod · 0.80
assert_online_or_errMethod · 0.80
collectMethod · 0.80

Tested by

no test coverage detected