Class: Browserctl::CommandDispatcher
- Inherits:
-
Object
- Object
- Browserctl::CommandDispatcher
- Defined in:
- lib/browserctl/server/command_dispatcher.rb
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 }.freeze
- SCREENSHOT_DIR =
File.("~/.browserctl/screenshots").freeze
- SCREENSHOT_EXTS =
%w[.png .jpg .jpeg].freeze
- CLOUDFLARE_SIGNALS =
[ "cf-challenge-running", "cf_chl_opt", "__cf_chl_f_tk", "Just a moment..." ].freeze
Instance Method Summary collapse
- #dispatch(req) ⇒ Object
-
#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.
40 41 42 43 44 45 |
# File 'lib/browserctl/server/command_dispatcher.rb', line 40 def initialize(pages, browser, snapshot_builder = SnapshotBuilder.new, global_mutex: Mutex.new) @pages = pages @browser = browser @snapshot_builder = snapshot_builder @global_mutex = global_mutex end |
Instance Method Details
#dispatch(req) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/browserctl/server/command_dispatcher.rb', line 47 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::PLUGIN_COMMANDS[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 |