Skip to main content

limit_cli/tools/browser/handlers/
settings.rs

1use super::super::args::ArgsExt;
2use super::super::client::BrowserClient;
3use super::super::client_ext::StorageExt;
4use super::super::response::ok_msg;
5use limit_agent::error::AgentError;
6use serde_json::Value;
7
8pub async fn set_viewport(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
9    let width = args.get_u64("width", "set_viewport")? as u32;
10    let height = args.get_u64("height", "set_viewport")? as u32;
11    let scale = args.get_opt_f64("scale").map(|s| s as f32);
12    client.set_viewport(width, height, scale).await?;
13    Ok(ok_msg(format!("Set viewport to {}x{}", width, height)))
14}
15
16pub async fn set_device(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
17    let name = args.get_str("name", "set_device")?;
18    client.set_device(name).await?;
19    Ok(ok_msg(format!("Set device to: {}", name)))
20}
21
22pub async fn set_geo(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
23    let latitude = args.get_f64("latitude", "set_geo")?;
24    let longitude = args.get_f64("longitude", "set_geo")?;
25    client.set_geo(latitude, longitude).await?;
26    Ok(ok_msg(format!(
27        "Set geolocation to ({}, {})",
28        latitude, longitude
29    )))
30}