Skip to main content

limit_cli/tools/browser/handlers/
storage.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 cookies(client: &BrowserClient, _args: &Value) -> Result<Value, AgentError> {
9    let cookies = client.cookies().await?;
10
11    let cookies_json: Vec<Value> = cookies
12        .iter()
13        .map(|c| {
14            serde_json::json!({
15                "name": c.name,
16                "value": c.value
17            })
18        })
19        .collect();
20
21    Ok(serde_json::json!({
22        "success": true,
23        "cookies": cookies_json,
24        "count": cookies.len()
25    }))
26}
27
28pub async fn cookies_set(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
29    let name = args.get_str("name", "cookies_set")?;
30    let value = args.get_str("value", "cookies_set")?;
31    client.cookies_set(name, value).await?;
32    Ok(ok_msg(format!("Set cookie: {}={}", name, value)))
33}
34
35pub async fn storage_get(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
36    let storage_type = args.get_str("storage_type", "storage_get")?;
37    let key = args.get_opt_str("key");
38    let value = client.storage_get(storage_type, key).await?;
39    Ok(serde_json::json!({
40        "success": true,
41        "value": value
42    }))
43}
44
45pub async fn storage_set(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
46    let storage_type = args.get_str("storage_type", "storage_set")?;
47    let key = args.get_str("key", "storage_set")?;
48    let value = args.get_str("value", "storage_set")?;
49    client.storage_set(storage_type, key, value).await?;
50    Ok(ok_msg(format!(
51        "Set {} storage: {}={}",
52        storage_type, key, value
53    )))
54}
55
56pub async fn network_requests(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
57    let filter = args.get_opt_str("filter");
58    let requests = client.network_requests(filter).await?;
59
60    let requests_json: Vec<Value> = requests
61        .iter()
62        .map(|r| {
63            serde_json::json!({
64                "method": r.method,
65                "url": r.url
66            })
67        })
68        .collect();
69
70    Ok(serde_json::json!({
71        "success": true,
72        "requests": requests_json,
73        "count": requests.len()
74    }))
75}