(&mut self)
| 106 | } |
| 107 | |
| 108 | fn request_driver_version(&mut self) -> Result<String, Error> { |
| 109 | let is_nightly = self.is_nightly(self.get_driver_version()); |
| 110 | let major_driver_version_binding = self.get_major_driver_version(); |
| 111 | let major_driver_version = major_driver_version_binding.as_str(); |
| 112 | let cache_path = self.get_cache_path()?; |
| 113 | let mut metadata = get_metadata(self.get_logger(), &cache_path); |
| 114 | |
| 115 | match get_driver_version_from_metadata( |
| 116 | &metadata.drivers, |
| 117 | self.driver_name, |
| 118 | major_driver_version, |
| 119 | ) { |
| 120 | Some(driver_version) => { |
| 121 | self.log.trace(format!( |
| 122 | "Driver TTL is valid. Getting {} version from metadata", |
| 123 | &self.driver_name |
| 124 | )); |
| 125 | Ok(driver_version) |
| 126 | } |
| 127 | _ => { |
| 128 | self.assert_online_or_err(OFFLINE_REQUEST_ERR_MSG)?; |
| 129 | |
| 130 | let selenium_releases = parse_json_from_url::<Vec<SeleniumRelease>>( |
| 131 | self.get_http_client(), |
| 132 | MIRROR_URL, |
| 133 | )?; |
| 134 | |
| 135 | let filtered_releases: Vec<SeleniumRelease> = selenium_releases |
| 136 | .into_iter() |
| 137 | .filter(|r| { |
| 138 | r.assets.iter().any(|url| { |
| 139 | if is_nightly { |
| 140 | url.browser_download_url.contains(SNAPSHOT) |
| 141 | } else { |
| 142 | url.browser_download_url.contains(GRID_RELEASE) |
| 143 | && !url.browser_download_url.contains(SNAPSHOT) |
| 144 | } |
| 145 | }) |
| 146 | }) |
| 147 | .collect(); |
| 148 | |
| 149 | if !filtered_releases.is_empty() { |
| 150 | let assets = &filtered_releases.first().unwrap().assets; |
| 151 | let driver_releases: Vec<&Assets> = assets |
| 152 | .iter() |
| 153 | .filter(|url| { |
| 154 | url.browser_download_url.contains(GRID_RELEASE) |
| 155 | && url.browser_download_url.contains(GRID_EXTENSION) |
| 156 | }) |
| 157 | .collect(); |
| 158 | let driver_url = &driver_releases.last().unwrap().browser_download_url; |
| 159 | self.driver_url = Some(driver_url.to_string()); |
| 160 | |
| 161 | let index_release = |
| 162 | driver_url.rfind(GRID_RELEASE).unwrap() + GRID_RELEASE.len() + 1; |
| 163 | let driver_version = if is_nightly { |
| 164 | let index_jar = driver_url.rfind(GRID_EXTENSION).unwrap() - 1; |
| 165 | driver_url.as_str()[index_release..index_jar].to_string() |
nothing calls this directly
no test coverage detected