Class: Browserctl::CommandDispatcher
- Inherits:
-
Object
- Object
- Browserctl::CommandDispatcher
- Includes:
- Handlers::Cookies, Handlers::DaemonControl, Handlers::DevTools, Handlers::Hitl, Handlers::Navigation, Handlers::Observation, Handlers::PageLifecycle
- Defined in:
- lib/browserctl/server/handlers/hitl.rb,
lib/browserctl/server/handlers/cookies.rb,
lib/browserctl/server/handlers/devtools.rb,
lib/browserctl/server/command_dispatcher.rb,
lib/browserctl/server/handlers/navigation.rb,
lib/browserctl/server/handlers/observation.rb,
lib/browserctl/server/handlers/daemon_control.rb,
lib/browserctl/server/handlers/page_lifecycle.rb
Defined Under Namespace
Modules: Handlers
Constant Summary collapse
- COMMAND_MAP =
{ "open_page" => :cmd_open_page, "close_page" => :cmd_close_page, "list_pages" => :cmd_list_pages, "goto" => :cmd_goto, "snapshot" => :cmd_snapshot, "evaluate" => :cmd_evaluate, "fill" => :cmd_fill, "click" => :cmd_click, "screenshot" => :cmd_screenshot, "wait_for" => :cmd_wait_for, "watch" => :cmd_watch, "url" => :cmd_url, "ping" => :cmd_ping, "shutdown" => :cmd_shutdown, "pause" => :cmd_pause, "resume" => :cmd_resume, "inspect" => :cmd_inspect, "cookies" => :cmd_cookies, "set_cookie" => :cmd_set_cookie, "clear_cookies" => :cmd_clear_cookies, "import_cookies" => :cmd_import_cookies, "store" => :cmd_store, "fetch" => :cmd_fetch }.freeze
- SCREENSHOT_DIR =
File.("~/.browserctl/screenshots").freeze
- SCREENSHOT_ROOTS =
[SCREENSHOT_DIR, File.(".")].freeze
- SCREENSHOT_EXTS =
%w[.png .jpg .jpeg].freeze
Instance Method Summary collapse
-
#dispatch(req) ⇒ Hash{Symbol => Object}
Dispatches a parsed request to the appropriate handler.
-
#initialize(pages, browser, snapshot_builder = SnapshotBuilder.new, global_mutex: Mutex.new) ⇒ CommandDispatcher
constructor
A new instance of CommandDispatcher.
Constructor Details
#initialize(pages, browser, snapshot_builder = SnapshotBuilder.new, global_mutex: Mutex.new) ⇒ CommandDispatcher
Returns a new instance of CommandDispatcher.
55 56 57 58 59 60 61 62 |
# File 'lib/browserctl/server/command_dispatcher.rb', line 55 def initialize(pages, browser, snapshot_builder = SnapshotBuilder.new, global_mutex: Mutex.new) @pages = pages @browser = browser @snapshot_builder = snapshot_builder @global_mutex = global_mutex @kv_store = {} @kv_mutex = Mutex.new end |
Instance Method Details
#dispatch(req) ⇒ Hash{Symbol => Object}
Dispatches a parsed request to the appropriate handler. Returns ‘{ error: String, code: String }` for unknown commands.
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/browserctl/server/command_dispatcher.rb', line 68 def dispatch(req) handler = COMMAND_MAP[req[:cmd]] if handler Browserctl.logger.debug("#{req[:cmd]} #{req[:name]}") return send(handler, req) end if (plugin = Browserctl.lookup_plugin_command(req[:cmd])) Browserctl.logger.debug("plugin:#{req[:cmd]} #{req[:name]}") session = req[:name] ? @global_mutex.synchronize { @pages[req[:name]] } : nil return plugin.call(session, req) end { error: "unknown command: #{req[:cmd]}" } end |