Class: Browserctl::CommandDispatcher
- Inherits:
-
Object
- Object
- Browserctl::CommandDispatcher
- Includes:
- Handlers::Cookies, Handlers::DaemonControl, Handlers::DevTools, Handlers::Hitl, Handlers::Navigation, Handlers::Observation, Handlers::PageLifecycle, Handlers::Session, Handlers::Storage
- Defined in:
- lib/browserctl/server/handlers/hitl.rb,
lib/browserctl/server/handlers/cookies.rb,
lib/browserctl/server/handlers/session.rb,
lib/browserctl/server/handlers/storage.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 =
{ "page_open" => :cmd_page_open, "page_close" => :cmd_page_close, "page_list" => :cmd_page_list, "page_focus" => :cmd_page_focus, "navigate" => :cmd_navigate, "wait" => :cmd_wait, "snapshot" => :cmd_snapshot, "evaluate" => :cmd_evaluate, "fill" => :cmd_fill, "click" => :cmd_click, "screenshot" => :cmd_screenshot, "url" => :cmd_url, "ping" => :cmd_ping, "shutdown" => :cmd_shutdown, "pause" => :cmd_pause, "resume" => :cmd_resume, "devtools" => :cmd_devtools, "cookies" => :cmd_cookies, "set_cookie" => :cmd_set_cookie, "delete_cookies" => :cmd_delete_cookies, "import_cookies" => :cmd_import_cookies, "store" => :cmd_store, "fetch" => :cmd_fetch, "storage_get" => :cmd_storage_get, "storage_set" => :cmd_storage_set, "storage_export" => :cmd_storage_export, "storage_import" => :cmd_storage_import, "storage_delete" => :cmd_storage_delete, "session_save" => :cmd_session_save, "session_load" => :cmd_session_load, "session_list" => :cmd_session_list, "session_delete" => :cmd_session_delete }.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.
68 69 70 71 72 73 74 75 |
# File 'lib/browserctl/server/command_dispatcher.rb', line 68 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.
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/browserctl/server/command_dispatcher.rb', line 81 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 |