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

Method request_driver_version

rust/src/grid.rs:108–193  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

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()

Callers

nothing calls this directly

Calls 15

get_metadataFunction · 0.85
parse_versionFunction · 0.85
create_driver_metadataFunction · 0.85
write_metadataFunction · 0.85
is_nightlyMethod · 0.80
get_driver_versionMethod · 0.80
get_cache_pathMethod · 0.80
traceMethod · 0.80
assert_online_or_errMethod · 0.80
filterMethod · 0.80

Tested by

no test coverage detected