def process(filter={})
if report.errors.exceptions?
@log = report.errors.exceptions
elsif report.errors.fubars?
@log = report.errors.fubars
elsif report.errors.timeouts?
@log = report.errors.timeouts
else
@log = report.timeline.messages.filter(:kind => :http_log, :state => :nominal)
end
return if @log.empty?
unless Stella::Utils.binary?(@log.first.request_body) || Stella::Utils.image?(@log.first.request_body)
@request_body = @log.first.request_body
end
@request_body_digest = @log.first.request_body.digest
@is_binary = Stella::Utils.binary?(@log.first.response_body)
@is_image = Stella::Utils.image?(@log.first.response_body)
unless binary? || image?
@response_body = @log.first.response_body.to_s
if @response_body.size >= 250_000
@response_body = @response_body.slice 0, 249_999
@response_body << ' [truncated]'
end
@response_body.force_encoding("UTF-8") if RUBY_VERSION >= "1.9.0"
begin
if defined?(Pismo) && @response_body
doc = Pismo::Document.new @response_body
@keywords = doc.keywords rescue nil
@title = doc.title
@favicon = doc.favicon
@author = doc.author
@lede = doc.lede
@description = doc.description
end
rescue => ex
Stella.li ex.message
end
end
@response_body_digest = @log.first.response_body.digest
@log.each { |entry| entry.response_body = ''; entry.request_body = '' }
processed!
end