use chaser_oxide::browser::Browser;
use chaser_oxide::browser::BrowserConfig;
use chaser_oxide::cdp::browser_protocol::network::CookieParam;
use futures::StreamExt;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt::init();
let (mut browser, mut handler) =
Browser::launch(BrowserConfig::builder().with_head().build()?).await?;
let handle = tokio::spawn(async move {
while let Some(h) = handler.next().await {
match h {
Ok(_) => continue,
Err(_) => break,
}
}
});
let _ = browser.new_page("https://setcookie.net/").await?;
let example_cookie = CookieParam::builder()
.domain(".setcookie.net")
.name("set_from_chromiumoxide")
.value("Test Value")
.path("/")
.build()?;
println!(
"\x1b[32mType 'c' to clear all cookies, 's' to set a cookie, 'q' to quit the browser\x1b[0m"
);
loop {
println!("All Browser cookies: {:?}", browser.get_cookies().await?);
let mut input = String::new();
std::io::stdin().read_line(&mut input)?;
if input.trim() == "c" {
browser.clear_cookies().await?;
}
if input.trim() == "s" {
browser.set_cookies(vec![example_cookie.clone()]).await?;
}
if input.trim() == "q" {
break;
}
}
browser.close().await?;
browser.wait().await?;
handle.await?;
Ok(())
}