Skip to content

Commit d7cbcbf

Browse files
authored
[rust] Change default TTLs in Selenium Manager (#11686)
* add ttl parameter to cli update documentation * fix typo un64->u64 * fix typo for single quotes * fix parameters short names * fix devault_value for new parameters * fix for type default value * fix typo with duplicate args
1 parent 796b2d4 commit d7cbcbf

9 files changed

Lines changed: 47 additions & 6 deletions

File tree

rust/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ Options:
4545
Print help information
4646
-V, --version
4747
Print version information
48+
--driver_ttl <TTL IN SECONDS>
49+
Set custom TTL for driver in seconds. Default value is 86400
50+
--browser_ttl <TTL IN SECONDS>
51+
Set custom TTL for browser in seconds default value is 0
4852
```
4953

5054
For instance, the command required to manage chromedriver is the following:

rust/src/chrome.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ impl SeleniumManager for ChromeManager {
150150
fn request_driver_version(&self) -> Result<String, Box<dyn Error>> {
151151
let browser_version = self.get_browser_version();
152152
let mut metadata = get_metadata(self.get_logger());
153+
let driver_ttl = self.get_config().driver_ttl;
153154

154155
match get_driver_version_from_metadata(&metadata.drivers, self.driver_name, browser_version)
155156
{
@@ -202,6 +203,7 @@ impl SeleniumManager for ChromeManager {
202203
browser_version,
203204
self.driver_name,
204205
&driver_version,
206+
driver_ttl,
205207
));
206208
write_metadata(&metadata, self.get_logger());
207209
}

rust/src/config.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
use crate::config::OS::{LINUX, MACOS, WINDOWS};
1919
use crate::REQUEST_TIMEOUT_SEC;
20+
use crate::TTL_BROWSERS_SEC;
21+
use crate::TTL_DRIVERS_SEC;
22+
2023
use std::env::consts::{ARCH, OS};
2124

2225
pub struct ManagerConfig {
@@ -27,6 +30,8 @@ pub struct ManagerConfig {
2730
pub browser_path: String,
2831
pub proxy: String,
2932
pub timeout: u64,
33+
pub browser_ttl: u64,
34+
pub driver_ttl: u64,
3035
}
3136

3237
impl ManagerConfig {
@@ -39,6 +44,8 @@ impl ManagerConfig {
3944
browser_path: "".to_string(),
4045
proxy: "".to_string(),
4146
timeout: REQUEST_TIMEOUT_SEC,
47+
browser_ttl: TTL_BROWSERS_SEC,
48+
driver_ttl: TTL_DRIVERS_SEC,
4249
}
4350
}
4451

@@ -52,6 +59,8 @@ impl ManagerConfig {
5259
browser_path: config.browser_path.as_str().to_string(),
5360
proxy: config.proxy.as_str().to_string(),
5461
timeout: config.timeout,
62+
browser_ttl: config.browser_ttl,
63+
driver_ttl: config.driver_ttl,
5564
}
5665
}
5766
}

rust/src/edge.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ impl SeleniumManager for EdgeManager {
150150
fn request_driver_version(&self) -> Result<String, Box<dyn Error>> {
151151
let browser_version = self.get_browser_version();
152152
let mut metadata = get_metadata(self.get_logger());
153+
let driver_ttl = self.get_config().driver_ttl;
153154

154155
match get_driver_version_from_metadata(&metadata.drivers, self.driver_name, browser_version)
155156
{
@@ -183,6 +184,7 @@ impl SeleniumManager for EdgeManager {
183184
browser_version,
184185
self.driver_name,
185186
&driver_version,
187+
driver_ttl,
186188
));
187189
write_metadata(&metadata, self.get_logger());
188190
}

rust/src/firefox.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ impl SeleniumManager for FirefoxManager {
143143
fn request_driver_version(&self) -> Result<String, Box<dyn Error>> {
144144
let browser_version = self.get_browser_version();
145145
let mut metadata = get_metadata(self.get_logger());
146+
let driver_ttl = self.get_config().driver_ttl;
146147

147148
match get_driver_version_from_metadata(&metadata.drivers, self.driver_name, browser_version)
148149
{
@@ -162,6 +163,7 @@ impl SeleniumManager for FirefoxManager {
162163
browser_version,
163164
self.driver_name,
164165
&driver_version,
166+
driver_ttl,
165167
));
166168
write_metadata(&metadata, self.get_logger());
167169
}

rust/src/iexplorer.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ impl SeleniumManager for IExplorerManager {
9292
fn request_driver_version(&self) -> Result<String, Box<dyn Error>> {
9393
let browser_version = self.get_browser_version();
9494
let mut metadata = get_metadata(self.get_logger());
95+
let driver_ttl = self.get_config().driver_ttl;
9596

9697
match get_driver_version_from_metadata(&metadata.drivers, self.driver_name, browser_version)
9798
{
@@ -135,6 +136,7 @@ impl SeleniumManager for IExplorerManager {
135136
browser_version,
136137
self.driver_name,
137138
&driver_version,
139+
driver_ttl,
138140
));
139141
write_metadata(&metadata, self.get_logger());
140142
}

rust/src/lib.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ pub const ENV_LOCALAPPDATA: &str = "LOCALAPPDATA";
7272
pub const FALLBACK_RETRIES: u32 = 5;
7373
pub const WHERE_COMMAND: &str = "where {}";
7474
pub const WHICH_COMMAND: &str = "which {}";
75+
pub const TTL_BROWSERS_SEC: u64 = 0;
76+
pub const TTL_DRIVERS_SEC: u64 = 86400;
7577

7678
pub trait SeleniumManager {
7779
// ----------------------------------------------------------
@@ -133,6 +135,7 @@ pub trait SeleniumManager {
133135
fn detect_browser_version(&self, commands: Vec<String>) -> Option<String> {
134136
let mut metadata = get_metadata(self.get_logger());
135137
let browser_name = &self.get_browser_name();
138+
let browser_ttl = self.get_config().browser_ttl;
136139

137140
match get_browser_version_from_metadata(&metadata.browsers, browser_name) {
138141
Some(version) => {
@@ -170,7 +173,11 @@ pub trait SeleniumManager {
170173
if !self.is_safari() {
171174
metadata
172175
.browsers
173-
.push(create_browser_metadata(browser_name, &browser_version));
176+
.push(create_browser_metadata(
177+
browser_name,
178+
&browser_version,
179+
browser_ttl,
180+
));
174181
write_metadata(&metadata, self.get_logger());
175182
}
176183
if !browser_version.is_empty() {

rust/src/main.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ use exitcode::{DATAERR, UNAVAILABLE};
2525

2626
use selenium_manager::logger::Logger;
2727
use selenium_manager::REQUEST_TIMEOUT_SEC;
28+
use selenium_manager::TTL_DRIVERS_SEC;
29+
use selenium_manager::TTL_BROWSERS_SEC;
2830
use selenium_manager::{
2931
clear_cache, get_manager_by_browser, get_manager_by_driver, SeleniumManager,
3032
};
@@ -82,6 +84,14 @@ struct Cli {
8284
/// Clear driver cache
8385
#[clap(short, long)]
8486
clear_cache: bool,
87+
88+
/// Set default driver ttl
89+
#[clap(long, value_parser, default_value_t = TTL_DRIVERS_SEC)]
90+
driver_ttl: u64,
91+
92+
/// Set default browser ttl
93+
#[clap(long, value_parser, default_value_t = TTL_BROWSERS_SEC)]
94+
browser_ttl: u64,
8595
}
8696

8797
fn main() -> Result<(), Box<dyn Error>> {

rust/src/metadata.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ use crate::files::get_cache_folder;
2626
use crate::Logger;
2727

2828
const METADATA_FILE: &str = "selenium-manager.json";
29-
const TTL_BROWSERS_SEC: u64 = 0;
30-
const TTL_DRIVERS_SEC: u64 = 86400;
3129

3230
#[derive(Serialize, Deserialize)]
3331
pub struct Browser {
@@ -121,24 +119,29 @@ pub fn get_driver_version_from_metadata(
121119
}
122120
}
123121

124-
pub fn create_browser_metadata(browser_name: &str, browser_version: &String) -> Browser {
122+
pub fn create_browser_metadata(
123+
browser_name: &str,
124+
browser_version: &String,
125+
browser_ttl: u64,
126+
) -> Browser {
125127
Browser {
126128
browser_name: browser_name.to_string(),
127129
browser_version: browser_version.to_string(),
128-
browser_ttl: now_unix_timestamp() + TTL_BROWSERS_SEC,
130+
browser_ttl: now_unix_timestamp() + browser_ttl,
129131
}
130132
}
131133

132134
pub fn create_driver_metadata(
133135
browser_version: &str,
134136
driver_name: &str,
135137
driver_version: &str,
138+
driver_ttl: u64,
136139
) -> Driver {
137140
Driver {
138141
browser_version: browser_version.to_string(),
139142
driver_name: driver_name.to_string(),
140143
driver_version: driver_version.to_string(),
141-
driver_ttl: now_unix_timestamp() + TTL_DRIVERS_SEC,
144+
driver_ttl: now_unix_timestamp() + driver_ttl,
142145
}
143146
}
144147

0 commit comments

Comments
 (0)