use crate::domains::{DispatchContext, DomainResult};
use crate::protocol::CdpError;
use serde_json::{json, Value};
pub async fn handle(method: &str, params: Option<Value>, ctx: &DispatchContext) -> DomainResult {
match method {
"enable" => enable(params, ctx),
"disable" => disable(ctx),
"continueRequest" => Ok(Some(json!({}))),
"failRequest" => Ok(Some(json!({}))),
"fulfillRequest" => Ok(Some(json!({}))),
"continueResponse" => Ok(Some(json!({}))),
_ => Err(CdpError {
code: -32601,
message: format!("Fetch.{} not implemented", method),
}),
}
}
fn enable(_params: Option<Value>, ctx: &DispatchContext) -> DomainResult {
ctx.events.set_fetch_enabled(true);
tracing::info!("Fetch domain enabled");
Ok(Some(json!({})))
}
fn disable(ctx: &DispatchContext) -> DomainResult {
ctx.events.set_fetch_enabled(false);
tracing::info!("Fetch domain disabled");
Ok(Some(json!({})))
}
pub fn emit_request_paused(
events: &crate::event::EventSender,
request_id: &str,
url: &str,
resource_type: &str,
) {
events.send_fetch_event(
"Fetch.requestPaused",
serde_json::json!({
"requestId": request_id,
"request": {
"url": url,
"method": "GET",
"headers": {},
"initialPriority": "VeryHigh",
"urlFragment": "",
},
"resourceType": resource_type,
"frameId": "main",
"networkIntercepted": true,
}),
);
}