@@ -52,6 +52,7 @@ pub struct IExplorerManager {
52
52
pub config : ManagerConfig ,
53
53
pub http_client : Client ,
54
54
pub log : Logger ,
55
+ pub driver_url : Option < String > ,
55
56
}
56
57
57
58
impl IExplorerManager {
@@ -67,6 +68,7 @@ impl IExplorerManager {
67
68
http_client : create_http_client ( default_timeout, default_proxy) ?,
68
69
config,
69
70
log : Logger :: default ( ) ,
71
+ driver_url : None ,
70
72
} ) )
71
73
}
72
74
}
@@ -132,9 +134,7 @@ impl SeleniumManager for IExplorerManager {
132
134
. filter ( |url| url. browser_download_url . contains ( IEDRIVER_RELEASE ) )
133
135
. collect ( ) ;
134
136
let driver_url = & driver_releases. last ( ) . unwrap ( ) . browser_download_url ;
135
- RELEASE_URL . with ( |url| {
136
- * url. borrow_mut ( ) = driver_url. to_string ( ) ;
137
- } ) ;
137
+ self . driver_url = Some ( driver_url. to_string ( ) ) ;
138
138
139
139
let index_release =
140
140
driver_url. rfind ( IEDRIVER_RELEASE ) . unwrap ( ) + IEDRIVER_RELEASE . len ( ) ;
@@ -163,30 +163,27 @@ impl SeleniumManager for IExplorerManager {
163
163
}
164
164
165
165
fn get_driver_url ( & mut self ) -> Result < String , Box < dyn Error > > {
166
- let mut driver_url = "" . to_string ( ) ;
167
- RELEASE_URL . with ( |url| {
168
- driver_url = url. borrow ( ) . to_string ( ) ;
169
- } ) ;
170
- if driver_url. is_empty ( ) {
171
- let driver_version = self . get_driver_version ( ) ;
172
- let mut release_version = driver_version. to_string ( ) ;
173
- if !driver_version. ends_with ( '0' ) {
174
- // E.g.: version 4.8.1 is shipped within release 4.8.0
175
- let error_message = format ! (
176
- "Wrong {} version: '{}'" ,
177
- self . get_driver_name( ) ,
178
- driver_version
179
- ) ;
180
- let index = release_version. rfind ( '.' ) . ok_or ( error_message) ? + 1 ;
181
- release_version = release_version[ ..index] . to_string ( ) ;
182
- release_version. push ( '0' ) ;
183
- }
184
- driver_url = format ! (
185
- "{}download/selenium-{}/{}{}.zip" ,
186
- DRIVER_URL , release_version, IEDRIVER_RELEASE , driver_version
166
+ if self . driver_url . is_some ( ) {
167
+ return Ok ( self . driver_url . as_ref ( ) . unwrap ( ) . to_string ( ) ) ;
168
+ }
169
+
170
+ let driver_version = self . get_driver_version ( ) ;
171
+ let mut release_version = driver_version. to_string ( ) ;
172
+ if !driver_version. ends_with ( '0' ) {
173
+ // E.g.: version 4.8.1 is shipped within release 4.8.0
174
+ let error_message = format ! (
175
+ "Wrong {} version: '{}'" ,
176
+ self . get_driver_name( ) ,
177
+ driver_version
187
178
) ;
179
+ let index = release_version. rfind ( '.' ) . ok_or ( error_message) ? + 1 ;
180
+ release_version = release_version[ ..index] . to_string ( ) ;
181
+ release_version. push ( '0' ) ;
188
182
}
189
- Ok ( driver_url)
183
+ Ok ( format ! (
184
+ "{}download/selenium-{}/{}{}.zip" ,
185
+ DRIVER_URL , release_version, IEDRIVER_RELEASE , driver_version
186
+ ) )
190
187
}
191
188
192
189
fn get_driver_path_in_cache ( & self ) -> PathBuf {
0 commit comments