Skip to content

Commit

Permalink
fix: clippy + fmt
Browse files Browse the repository at this point in the history
  • Loading branch information
SpikeHD committed Sep 25, 2024
1 parent 838b98d commit de5c08f
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 12 deletions.
9 changes: 6 additions & 3 deletions examples/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,12 @@ fn main() -> Result<(), CrowserError> {
let mut ipc = ipc.lock().unwrap();

if let Some(ipc) = ipc.as_mut() {
ipc.register_command("hello", Box::new(|_| {
Ok(serde_json::json!("Hello from Crowser!"))
})).unwrap_or_default();
ipc
.register_command(
"hello",
Box::new(|_| Ok(serde_json::json!("Hello from Crowser!"))),
)
.unwrap_or_default();
}

std::thread::sleep(std::time::Duration::from_secs(1));
Expand Down
33 changes: 24 additions & 9 deletions src/ipc.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
use std::{collections::HashMap, fmt::Debug, sync::{Arc, Mutex}};
use std::{
collections::HashMap,
fmt::Debug,
sync::{Arc, Mutex},
};

use serde_json::Value;

Expand All @@ -7,17 +11,22 @@ use crate::{
self,
commands::{CDPCommand, RuntimeEvaluate, TargetAttachToTarget, TargetGetTargets},
Cdp,
}, error::CrowserError, util::javascript::IPC_JS
},
error::CrowserError,
util::javascript::IPC_JS,
};

type IpcRegistrationMap =
Arc<Mutex<HashMap<String, Vec<Box<dyn Fn(Value) -> Result<Value, CrowserError> + Send + Sync>>>>>;

#[derive(Clone)]
pub struct BrowserIpc {
cdp: Arc<Mutex<Cdp>>,
session_id: String,
attached: bool,

commands: Arc<Mutex<HashMap<String, Box<dyn Fn(Value) -> Result<Value, CrowserError> + Send + Sync>>>>,
listeners: Arc<Mutex<HashMap<String, Vec<Box<dyn Fn(Value) -> Result<Value, CrowserError> + Send + Sync>>>>>,
commands: IpcRegistrationMap,
listeners: IpcRegistrationMap,
}

impl Debug for BrowserIpc {
Expand Down Expand Up @@ -136,7 +145,7 @@ impl BrowserIpc {

std::thread::spawn(move || {
let mut last_context_create_uid = String::new();

loop {
std::thread::sleep(std::time::Duration::from_millis(10));

Expand All @@ -160,7 +169,9 @@ impl BrowserIpc {
drop(ipc);

if let Ok(Some(evt)) = refresh {
let uid = evt.params["context"]["uniqueId"].as_str().unwrap_or_default();
let uid = evt.params["context"]["uniqueId"]
.as_str()
.unwrap_or_default();

if uid != last_context_create_uid {
last_context_create_uid = uid.to_string();
Expand Down Expand Up @@ -193,7 +204,7 @@ impl BrowserIpc {
let mut cdp = self.cdp.lock().unwrap();
let params = RuntimeEvaluate {
expression: script.as_ref().to_string(),
await_promise: Some(true)
await_promise: Some(true),
};
let cmd = CDPCommand::new("Runtime.evaluate", params, Some(self.session_id.clone()));
let result = cdp.send(cmd, None)?;
Expand All @@ -214,7 +225,11 @@ impl BrowserIpc {
Ok(Value::Null)
}

pub fn register_command(&mut self, name: impl AsRef<str>, callback: Box<dyn Fn(Value) -> Result<Value, CrowserError> + Send + Sync>) -> Result<(), CrowserError> {
pub fn register_command(
&mut self,
name: impl AsRef<str>,
callback: Box<dyn Fn(Value) -> Result<Value, CrowserError> + Send + Sync>,
) -> Result<(), CrowserError> {
let mut commands = self.commands.lock().unwrap();

// Check if command already exists
Expand All @@ -223,7 +238,7 @@ impl BrowserIpc {
return Err(CrowserError::IpcError("Command already exists".to_string()));
}

commands.insert(name.as_ref().to_string(), callback);
commands.insert(name.as_ref().to_string(), vec![callback]);

Ok(())
}
Expand Down

0 comments on commit de5c08f

Please sign in to comment.