limit_cli/tools/browser/handlers/
storage.rs1use 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}