Class: Julewire::Rack::Capture::BufferedResponseBody

Inherits:
Object
  • Object
show all
Defined in:
lib/julewire/rack/capture/buffered_response_body.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(response, content_types:, limit:, mode: Settings::STRING_BODY) ⇒ BufferedResponseBody

Returns a new instance of BufferedResponseBody.



11
12
13
14
15
16
17
18
19
# File 'lib/julewire/rack/capture/buffered_response_body.rb', line 11

def initialize(response, content_types:, limit:, mode: Settings::STRING_BODY)
  @response = response
  @content_types = content_types
  @limit = limit
  @mode = mode
  @captured = +""
  @total_bytes = 0
  @truncated = false
end

Class Method Details

.call(response) ⇒ Object



8
# File 'lib/julewire/rack/capture/buffered_response_body.rb', line 8

def call(response, **) = new(response, **).summary_fields

Instance Method Details

#summary_fieldsObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/julewire/rack/capture/buffered_response_body.rb', line 21

def summary_fields
  return {} unless BodyContentType.allowed?(@response, selector: @content_types)

  body_parts = response_body_parts
  return {} unless body_parts

  if @limit.nil?
    fields = unlimited_single_part_fields(body_parts)
    return fields if fields
  end

  capture(body_parts)
  return {} if @total_bytes.zero? && @captured.empty?

  JsonBody.fields(:response, @captured, bytes: @total_bytes, truncated: @truncated, mode: @mode)
end