Class: RubyInspector::DevToolsRequestTracker

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_inspector/dev_tools_request_tracker.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request_tracker) ⇒ DevToolsRequestTracker

Returns a new instance of DevToolsRequestTracker.



10
11
12
13
14
15
16
# 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

Instance Attribute Details

#request_idObject (readonly)

Returns the value of attribute request_id.



8
9
10
# File 'lib/ruby_inspector/dev_tools_request_tracker.rb', line 8

def request_id
  @request_id
end

#request_trackerObject (readonly)

Returns the value of attribute request_tracker.



8
9
10
# File 'lib/ruby_inspector/dev_tools_request_tracker.rb', line 8

def request_tracker
  @request_tracker
end

Class Method Details

.next_request_idObject



3
4
5
6
# 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

Instance Method Details

#notify_body_receivedObject



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# 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_startedObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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_receivedObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 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