Module: Bidi2pdf::Bidi::NetworkEventFormatters::NetworkEventFormatterUtils

Included in:
NetworkEventConsoleFormatter, NetworkEventHtmlFormatter
Defined in:
lib/bidi2pdf/bidi/network_event_formatters/network_event_formatter_utils.rb

Instance Method Summary collapse

Instance Method Details

#format_bytes(size) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/bidi2pdf/bidi/network_event_formatters/network_event_formatter_utils.rb', line 9

def format_bytes(size)
  return "N/A" unless size.is_a?(Numeric)

  units = %w[B KB MB GB TB]
  idx = 0
  while size >= 1024 && idx < units.size - 1
    size /= 1024.0
    idx += 1
  end
  format("%<size>.2f %<unit>s", size: size, unit: units[idx])
end

#format_timestamp(timestamp) ⇒ Object



37
38
39
40
41
# File 'lib/bidi2pdf/bidi/network_event_formatters/network_event_formatter_utils.rb', line 37

def format_timestamp(timestamp)
  return "N/A" unless timestamp

  Time.at(timestamp.to_f / 1000).utc.strftime("%Y-%m-%d %H:%M:%S.%L UTC")
end

#parse_timing(event) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/bidi2pdf/bidi/network_event_formatters/network_event_formatter_utils.rb', line 21

def parse_timing(event)
  return [] unless event.timing.is_a?(Hash)

  keys = %w[
  requestTime proxyStart proxyEnd dnsStart dnsEnd connectStart connectEnd
  sslStart sslEnd workerStart workerReady sendStart sendEnd receiveHeadersEnd
]

  keys.filter_map do |key|
    next unless event.timing[key]

    label = key.gsub(/([A-Z])/, ' \1').capitalize
    { label: label, key: key, ms: event.timing[key].round(2) }
  end
end

#shorten_url(url) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/bidi2pdf/bidi/network_event_formatters/network_event_formatter_utils.rb', line 43

def shorten_url(url)
  sanitized_url = CGI.escapeHTML(url)

  return sanitized_url unless sanitized_url.start_with?("data:text/html")

  "data:text/html,..."
end