Class: Browserctl::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/browserctl/client.rb,
lib/browserctl/client/recording_interceptor.rb

Overview

Thin IPC client that wraps each browserd command as a Ruby method call.

Defined Under Namespace

Classes: RecordingInterceptor

Instance Method Summary collapse

Parameters:

Returns:



335
336
337
338
339
340
341
342
343
344
345
# File 'lib/browserctl/client.rb', line 335

def select(name, selector = nil, value = nil, ref: nil)
  unless selector || ref
    raise Browserctl::Error.new(
      "select: provide selector or ref",
      code: Browserctl::Error::Codes::INVALID_SELECTOR_REF,
      context: { method: :select, name: name }
    )
  end

  call("select", name: name, selector: selector, ref: ref, value: value)
end

Sets a cookie on a named page.

Parameters:

Returns:



169
170
171
172
# File 'lib/browserctl/client.rb', line 169

def set_cookie(name, cookie_name, value, domain, path: "/")
  call("set_cookie", name: name, cookie_name: cookie_name,
                     value: value, domain: domain, path: path)
end

#shutdown ⇒ Hash

Shuts down browserd gracefully.

Returns:



123
# File 'lib/browserctl/client.rb', line 123

def shutdown                   = call("shutdown")

#snapshot(name, format: "elements", diff: false) ⇒ Hash

Takes a DOM snapshot. Returns challenge: true when Cloudflare is detected.

Parameters:

Returns:



95
96
97
# File 'lib/browserctl/client.rb', line 95

def snapshot(name, format: "elements", diff: false)
  call("snapshot", name: name, format: format, diff: diff)
end

#state_delete(name) ⇒ Object

Permanently deletes a state bundle.



382
# File 'lib/browserctl/client.rb', line 382

def state_delete(name) = call("state_delete", name: name)

#state_info(name) ⇒ Object

Reads a single bundle's manifest.



379
# File 'lib/browserctl/client.rb', line 379

def state_info(name) = call("state_info", name: name)

#state_list ⇒ Object

Lists all stored state bundles (manifest only — no payload decryption).



376
# File 'lib/browserctl/client.rb', line 376

def state_list = call("state_list")

#state_load(name, passphrase: nil, skip_auth_check: false) ⇒ Object

Restores a .bctl bundle into the running daemon. The daemon runs the auth_required detector against the bundle's cookies before applying; callers that have already verified the bundle (e.g. workflow load_state after a successful rotate) can pass skip_auth_check: true to bypass it.



371
372
373
# File 'lib/browserctl/client.rb', line 371

def state_load(name, passphrase: nil, skip_auth_check: false)
  call("state_load", name: name, passphrase: passphrase, skip_auth_check: skip_auth_check)
end

#state_save(name, origins: nil, flow: nil, flow_version: nil, passphrase: nil) ⇒ Hash

Saves browser state (cookies + storage) into a single .bctl bundle.

Returns:



360
361
362
363
364
# File 'lib/browserctl/client.rb', line 360

def state_save(name, origins: nil, flow: nil, flow_version: nil, passphrase: nil)
  call("state_save",
       name: name, origins: origins, flow: flow,
       flow_version: flow_version, passphrase: passphrase)
end

#storage_delete(name, stores: "all") ⇒ Hash

Clears localStorage and/or sessionStorage for the page.

Parameters:

Returns:



244
245
246
# File 'lib/browserctl/client.rb', line 244

def storage_delete(name, stores: "all")
  call("storage_delete", name: name, stores: stores)
end

#storage_export(name, path, stores: "all") ⇒ Hash

Exports localStorage and/or sessionStorage to a JSON file.

Parameters:

Returns:



228
229
230
# File 'lib/browserctl/client.rb', line 228

def storage_export(name, path, stores: "all")
  call("storage_export", name: name, path: path, stores: stores)
end

#storage_get(name, key, store: "local") ⇒ Hash

Returns the value of a localStorage or sessionStorage key.

Parameters:

Returns:



209
210
211
# File 'lib/browserctl/client.rb', line 209

def storage_get(name, key, store: "local")
  call("storage_get", name: name, key: key, store: store)
end

#storage_import(name, path) ⇒ Hash

Imports storage keys from a JSON file into the page's localStorage.

Parameters:

Returns:



236
237
238
# File 'lib/browserctl/client.rb', line 236

def storage_import(name, path)
  call("storage_import", name: name, path: path)
end

#storage_set(name, key, value, store: "local") ⇒ Hash

Sets a localStorage or sessionStorage key.

Parameters:

Returns:



219
220
221
# File 'lib/browserctl/client.rb', line 219

def storage_set(name, key, value, store: "local")
  call("storage_set", name: name, key: key, value: value, store: store)
end

#store(key, value) ⇒ Hash

Stores a value in the daemon-scoped key-value store.

Parameters:

Returns:



150
# File 'lib/browserctl/client.rb', line 150

def store(key, value)          = call("store", key: key, value: value)

#upload(name, selector = nil, path = nil, ref: nil) ⇒ Hash

Sets a file-input element to the given file path.

Parameters:

Returns:



317
318
319
320
321
322
323
324
325
326
327
# File 'lib/browserctl/client.rb', line 317

def upload(name, selector = nil, path = nil, ref: nil)
  unless selector || ref
    raise Browserctl::Error.new(
      "upload: provide selector or ref",
      code: Browserctl::Error::Codes::INVALID_SELECTOR_REF,
      context: { method: :upload, name: name }
    )
  end

  call("upload", name: name, selector: selector, ref: ref, path: path)
end

#url(name) ⇒ Hash

Returns the current URL of a named page.

Parameters:

Returns:



109
# File 'lib/browserctl/client.rb', line 109

def url(name)                  = call("url",      name: name)

#wait(name, selector, timeout: 30) ⇒ Hash

Waits for a CSS selector to appear within the given timeout.

Parameters:

Returns:



104
# File 'lib/browserctl/client.rb', line 104

def wait(name, selector, timeout: 30) = call("wait", name: name, selector: selector, timeout: timeout)