class RubyInspector::DevToolsRequestTracker

Attributes

request_id[R]
request_tracker[R]

Public Class Methods

new(request_tracker) click to toggle source
# File lib/ruby_inspector/dev_tools_request_tracker.rb, line 10
def initialize(request_tracker)
  @request_tracker = request_tracker
  @request_id = self.class.next_request_id.to_s
  notify_request_started
  request_tracker.on_response { notify_response_received }
  request_tracker.on_body { notify_body_received }
end
next_request_id() click to toggle source
# File lib/ruby_inspector/dev_tools_request_tracker.rb, line 3
def self.next_request_id
  @current_request_id ||= 0
  @current_request_id += 1
end

Public Instance Methods

notify_body_received() click to toggle source
# File lib/ruby_inspector/dev_tools_request_tracker.rb, line 55
def notify_body_received
  RubyInspector.send_info(
    method: "RubyInspector.network.cacheBody",
    params: { requestId: request_id },
    result: {
      body: request_tracker.response_body,
      base64Encoded: false
    }
  )

  RubyInspector.send_info(
    method: "Network.loadingFinished",
    params: {
      requestId: request_id,
      timestamp: Time.now.to_f,
      encodedDataLength: request_tracker.response_body.length
    }
  )
end
notify_request_started() click to toggle source
# File lib/ruby_inspector/dev_tools_request_tracker.rb, line 18
def notify_request_started
  RubyInspector.send_info(
    method: "Network.requestWillBeSent",
    params: {
      requestId: request_id,
      request: {
        url: request_tracker.url,
        method: request_tracker.method,
        headers: request_tracker.request_headers,
        postData: request_tracker.request_body
      },
      timestamp: Time.now.to_f,
      type: "Other"
    }
  )
end
notify_response_received() click to toggle source
# File lib/ruby_inspector/dev_tools_request_tracker.rb, line 35
def notify_response_received
  RubyInspector.send_info(
    method: "Network.responseReceived",
    params: {
      requestId: request_id,
      timestamp: Time.now.to_f,
      type: "Document",
      response: {
        url: request_tracker.url,
        status: request_tracker.status_code,
        statusText: request_tracker.status_message,
        headers: request_tracker.response_headers,
        mimeType: "text/html",
        requestHeaders: request_tracker.request_headers,
        remotePort: request_tracker.port
      }
    }
  )
end