1use serde_json::Value;
2
3use crate::methods::{browser, page};
4use crate::protocol::ServerError;
5use crate::state::AppState;
6
7pub async fn dispatch(
8 state: &mut AppState,
9 method: &str,
10 params: Value,
11) -> Result<Value, ServerError> {
12 match method {
13 "browser.launch" => browser::launch(state, params).await,
14 "browser.new_page" => browser::new_page(state, params).await,
15 "browser.tabs" => browser::tabs(state, params).await,
16 "browser.close_tab" => browser::close_tab(state, params).await,
17 "browser.close" => browser::close(state, params).await,
18
19 "page.goto" => page::goto(state, params).await,
20 "page.click" => page::click(state, params).await,
21 "page.click_text" => page::click_text(state, params).await,
22 "page.human_click" => page::human_click(state, params).await,
23 "page.human_click_text" => page::human_click_text(state, params).await,
24 "page.fill" => page::fill(state, params).await,
25 "page.human_fill" => page::human_fill(state, params).await,
26 "page.type_into" => page::type_into(state, params).await,
27 "page.text" => page::text(state, params).await,
28 "page.content" => page::content(state, params).await,
29 "page.title" => page::title(state, params).await,
30 "page.url" => page::url(state, params).await,
31 "page.get_text" => page::get_text(state, params).await,
32 "page.get_attribute" => page::get_attribute(state, params).await,
33 "page.exists" => page::exists(state, params).await,
34 "page.wait_for" => page::wait_for(state, params).await,
35 "page.wait_for_visible" => page::wait_for_visible(state, params).await,
36 "page.wait_for_text" => page::wait_for_text(state, params).await,
37 "page.evaluate" => page::evaluate(state, params).await,
38 "page.execute" => page::execute(state, params).await,
39 "page.fetch" => page::fetch(state, params).await,
40 "page.capture_state" => page::capture_state(state, params).await,
41 "page.restore_state" => page::restore_state(state, params).await,
42 "page.screenshot" => page::screenshot(state, params).await,
43 "page.select" => page::select(state, params).await,
44 "page.hover" => page::hover(state, params).await,
45 "page.press_key" => page::press_key(state, params).await,
46 "page.mouse_down" => page::mouse_down(state, params).await,
47 "page.mouse_move" => page::mouse_move(state, params).await,
48 "page.mouse_up" => page::mouse_up(state, params).await,
49 "page.key_down" => page::key_down(state, params).await,
50 "page.key_up" => page::key_up(state, params).await,
51 "page.release_all_inputs" => page::release_all_inputs(state, params).await,
52 "page.solve_captcha" => page::solve_captcha(state, params).await,
53 "page.close" => page::close(state, params).await,
54
55 _ => Err(ServerError::unknown_method(method)),
56 }
57}