///|
/// Handle network.addIntercept
fn BidiProtocol::handle_network_add_intercept(
self : BidiProtocol,
request_id : Int,
params : Json?,
) -> Unit {
let options = match
self.validate_network_add_intercept_params(request_id, params) {
Some(options) => options
None => return
}
let intercept_id = self.add_network_intercept_options(options)
self.send_success(
request_id,
Some(make_object({ "intercept": Json::string(intercept_id) })),
)
}
///|
fn BidiProtocol::handle_network_add_intercept_id(
self : BidiProtocol,
request_id : Int,
params : Json?,
) -> Unit {
let options = match
self.validate_network_add_intercept_params(request_id, params) {
Some(options) => options
None => return
}
let intercept_id = self.add_network_intercept_options(options)
self.send_success(request_id, Some(Json::string(intercept_id)))
}
///|
fn BidiProtocol::add_network_intercept_options(
self : BidiProtocol,
options : Map[String, Json],
) -> String {
let intercept_id = left_pad_with_zero(
self.network_state.next_network_intercept_id.to_string(),
32,
)
self.network_state.next_network_intercept_id += 1
self.network_state.network_intercepts[intercept_id] = make_object(options)
intercept_id
}
///|
/// Handle network.removeIntercept
fn BidiProtocol::handle_network_remove_intercept(
self : BidiProtocol,
request_id : Int,
params : Json?,
) -> Unit {
let map = match params {
Some(Object(map)) => map
_ => {
self.send_error(
request_id, "invalid argument", "params must be an object",
)
return
}
}
let intercept_id = match map.get("intercept") {
Some(String(id)) => id
Some(_) => {
self.send_error(
request_id, "invalid argument", "intercept must be a string",
)
return
}
None => {
self.send_error(request_id, "invalid argument", "Missing intercept")
return
}
}
if !self.network_state.network_intercepts.contains(intercept_id) {
self.send_error(
request_id,
"no such intercept",
"Unknown intercept: " + intercept_id,
)
return
}
self.network_state.network_intercepts.remove(intercept_id)
self.send_success(request_id, Some(make_object({})))
}