Skip to content
This repository has been archived by the owner on Aug 3, 2023. It is now read-only.

Commit

Permalink
wip: uses PR #28 of chrome-devtools-rs
Browse files Browse the repository at this point in the history
  • Loading branch information
EverlastingBugstopper committed Jan 16, 2020
1 parent 942b3c6 commit f4a3c3e
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 39 deletions.
7 changes: 3 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ hyper-tls = "0.4.0"
chrono = "0.4.9"
tokio = {version = "0.2", default-features = false, features = ["io-std", "time"]}
# chrome-devtools-rs = { path = "../chrome-devtools-rs" }
chrome-devtools-rs = { git = "https://github.com/everlastingbugstopper/chrome-devtools-rs", rev = "b7a0e9f" }
chrome-devtools-rs = { git = "https://github.com/everlastingbugstopper/chrome-devtools-rs", rev = "1e64ad7" }
ws = "0.9.0"
futures = "0.3"
futures-util = "0.3"
Expand Down
59 changes: 25 additions & 34 deletions src/commands/dev/socket.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::time::Duration;

use chrome_devtools::events::DevtoolsEvent;
use chrome_devtools as protocol;

use console::style;

Expand All @@ -25,13 +25,9 @@ pub async fn listen(session_id: String) -> Result<(), failure::Error> {

let (mut write, read) = ws_stream.split();

let enable_runtime = Message::Text(
r#"{
"id": 1,
"method": "Runtime.enable"
}"#
.into(),
);
let enable_runtime = protocol::runtime::MethodSend::Enable(1.into());
let enable_runtime = serde_json::to_string(&enable_runtime)?;
let enable_runtime = Message::Text(enable_runtime.into());
write.send(enable_runtime).await?;

let (keep_alive_tx, keep_alive_rx) = futures::channel::mpsc::unbounded();
Expand All @@ -43,25 +39,25 @@ pub async fn listen(session_id: String) -> Result<(), failure::Error> {
async {
let message = message.unwrap().into_text().unwrap();
log::info!("{}", message);
let message: Result<DevtoolsEvent, serde_json::Error> =
serde_json::from_str(&message);
match message {
Ok(message) => match message {
DevtoolsEvent::ConsoleAPICalled(event) => match event.log_type.as_str() {
"log" => println!("{}", style(event).blue()),
"error" => println!("{}", style(event).red()),
_ => println!("unknown console event: {}", event),
},
DevtoolsEvent::ExceptionThrown(event) => {
let message: Result<protocol::Runtime, failure::Error> =
serde_json::from_str(&message).map_err(|e| {
failure::format_err!("this event could not be parsed:\n{}", e)
});
if let Ok(protocol::Runtime::Event(event)) = message {
match event {
protocol::runtime::Event::ConsoleAPICalled(event) => {
match event.r#type.as_str() {
"log" => println!("{}", style(event).green()),
"error" => println!("{}", style(event).red()),
_ => println!("{}", style(event).yellow()),
}
}
protocol::runtime::Event::ExceptionThrown(event) => {
println!("{}", style(event).bold().red())
}
},
Err(e) => {
// this event was not parsed as a DevtoolsEvent
// TODO: change this to a warn after chrome-devtools-rs is parsing all messages
log::info!("this event was not parsed as a DevtoolsEvent:\n{}", e);
_ => (),
}
};
}
}
})
};
Expand All @@ -78,16 +74,11 @@ async fn keep_alive(tx: futures::channel::mpsc::UnboundedSender<Message>) {

loop {
interval.tick().await;
let keep_alive_message = format!(
r#"{{
"id": {},
"method": "Runtime.getIsolateId"
}}"#,
id
);

tx.unbounded_send(Message::Text(keep_alive_message.into()))
.unwrap();
let keep_alive_message = protocol::runtime::MethodSend::GetIsolateId(id.into());
let keep_alive_message = serde_json::to_string(&keep_alive_message)
.expect("Could not convert keep alive message to JSON");
let keep_alive_message = Message::Text(keep_alive_message.into());
tx.unbounded_send(keep_alive_message).unwrap();
id += 1;
}
}

0 comments on commit f4a3c3e

Please sign in to comment.