use crate::utils::get_user_data_dir;
use headless_chrome::browser::default_executable;
use headless_chrome::{Browser, LaunchOptions};
use std::error::Error;
use std::ffi::OsString;
use std::time::Duration;
pub fn create_browser(agent: &str, headless: bool) -> Result<Browser, Box<dyn Error>> {
let user_data_dir = get_user_data_dir()?;
let user_agent = OsString::from(format!("--user-agent={agent}"));
let body = OsString::from("--app=data:text/html,");
let window = OsString::from("--new-window");
let mut options = LaunchOptions::default_builder();
let mut launch_options = options
.headless(headless)
.sandbox(false)
.idle_browser_timeout(Duration::MAX)
.window_size(Some((800, 800)))
.args(vec![
body.as_os_str(),
window.as_os_str(),
user_agent.as_os_str(),
])
.user_data_dir(Some(user_data_dir));
if let Ok(executable_path) = default_executable() {
launch_options = launch_options.path(Some(executable_path));
}
Ok(Browser::new(launch_options.build()?)?)
}