Class: Daytona::ComputerUse::Recording
- Inherits:
-
Object
- Object
- Daytona::ComputerUse::Recording
- Defined in:
- lib/daytona/computer_use.rb
Overview
Recording operations for computer use functionality.
Instance Attribute Summary collapse
-
#sandbox_id ⇒ String
readonly
The ID of the sandbox.
-
#toolbox_api ⇒ DaytonaToolboxApiClient::ComputerUseApi
readonly
API client for sandbox operations.
Instance Method Summary collapse
-
#delete(id:) ⇒ void
Deletes a recording by ID.
-
#download(id:, local_path:) ⇒ void
Downloads a recording file and saves it to a local path.
-
#get(id:) ⇒ DaytonaToolboxApiClient::Recording
Gets details of a specific recording by ID.
-
#initialize(sandbox_id:, toolbox_api:) ⇒ Recording
constructor
A new instance of Recording.
-
#list ⇒ DaytonaToolboxApiClient::ListRecordingsResponse
Lists all recordings (active and completed).
-
#start(label: nil) ⇒ DaytonaToolboxApiClient::Recording
Starts a new screen recording session.
-
#stop(id:) ⇒ DaytonaToolboxApiClient::Recording
Stops an active screen recording session.
Constructor Details
#initialize(sandbox_id:, toolbox_api:) ⇒ Recording
Returns a new instance of Recording.
426 427 428 429 |
# File 'lib/daytona/computer_use.rb', line 426 def initialize(sandbox_id:, toolbox_api:) @sandbox_id = sandbox_id @toolbox_api = toolbox_api end |
Instance Attribute Details
#sandbox_id ⇒ String (readonly)
Returns The ID of the sandbox.
419 420 421 |
# File 'lib/daytona/computer_use.rb', line 419 def sandbox_id @sandbox_id end |
#toolbox_api ⇒ DaytonaToolboxApiClient::ComputerUseApi (readonly)
Returns API client for sandbox operations.
422 423 424 |
# File 'lib/daytona/computer_use.rb', line 422 def toolbox_api @toolbox_api end |
Instance Method Details
#delete(id:) ⇒ void
This method returns an undefined value.
Deletes a recording by ID.
509 510 511 512 513 |
# File 'lib/daytona/computer_use.rb', line 509 def delete(id:) toolbox_api.delete_recording(id) rescue StandardError => e raise Sdk::Error, "Failed to delete recording: #{e.}" end |
#download(id:, local_path:) ⇒ void
This method returns an undefined value.
Downloads a recording file and saves it to a local path.
The file is streamed directly to disk without loading the entire content into memory.
527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 |
# File 'lib/daytona/computer_use.rb', line 527 def download(id:, local_path:) require 'fileutils' require 'typhoeus' # Get the API configuration and build the download URL api_client = toolbox_api.api_client config = api_client.config base_url = config.base_url download_url = "#{base_url}/computeruse/recordings/#{id}/download" # Create parent directory if it doesn't exist parent_dir = File.dirname(local_path) FileUtils.mkdir_p(parent_dir) unless parent_dir.empty? # Stream the download directly to file file = File.open(local_path, 'wb') request = Typhoeus::Request.new( download_url, method: :get, headers: api_client.default_headers, timeout: config.timeout, ssl_verifypeer: config.verify_ssl, ssl_verifyhost: config.verify_ssl_host ? 2 : 0 ) # Stream chunks directly to file request.on_body do |chunk| file.write(chunk) end request.on_complete do |response| file.close unless response.success? File.delete(local_path) if File.exist?(local_path) raise Sdk::Error, "Failed to download recording: HTTP #{response.code}" end end request.run rescue StandardError => e file&.close File.delete(local_path) if File.exist?(local_path) raise Sdk::Error, "Failed to download recording: #{e.}" end |
#get(id:) ⇒ DaytonaToolboxApiClient::Recording
Gets details of a specific recording by ID.
494 495 496 497 498 |
# File 'lib/daytona/computer_use.rb', line 494 def get(id:) toolbox_api.get_recording(id) rescue StandardError => e raise Sdk::Error, "Failed to get recording: #{e.}" end |
#list ⇒ DaytonaToolboxApiClient::ListRecordingsResponse
Lists all recordings (active and completed).
477 478 479 480 481 |
# File 'lib/daytona/computer_use.rb', line 477 def list toolbox_api.list_recordings rescue StandardError => e raise Sdk::Error, "Failed to list recordings: #{e.}" end |
#start(label: nil) ⇒ DaytonaToolboxApiClient::Recording
Starts a new screen recording session.
442 443 444 445 446 447 |
# File 'lib/daytona/computer_use.rb', line 442 def start(label: nil) request = DaytonaToolboxApiClient::StartRecordingRequest.new(label:) toolbox_api.start_recording(request: request) rescue StandardError => e raise Sdk::Error, "Failed to start recording: #{e.}" end |
#stop(id:) ⇒ DaytonaToolboxApiClient::Recording
Stops an active screen recording session.
459 460 461 462 463 464 |
# File 'lib/daytona/computer_use.rb', line 459 def stop(id:) request = DaytonaToolboxApiClient::StopRecordingRequest.new(id: id) toolbox_api.stop_recording(request) rescue StandardError => e raise Sdk::Error, "Failed to stop recording: #{e.}" end |