(&mut self)
| 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 { |
nothing calls this directly
no test coverage detected