Class Stella::Report::Content

  1. lib/stella/report.rb
Parent: Storable

Methods

public instance

  1. binary?
  2. image?
  3. process

Included modules

  1. Gibbler::Complex
  2. Report::Plugin

Classes and Modules

Module Stella::Report::Content::ReportMethods

Public instance methods

binary? ()
[show source]
# File lib/stella/report.rb, line 131
      def binary?
        @is_binary == true
      end
image? ()
[show source]
# File lib/stella/report.rb, line 134
      def image?
        @is_image == true
      end
process (filter={})
[show source]
# File lib/stella/report.rb, line 137
      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  # BUG: undefined method `downcase' for nil:NilClass
              @title = doc.title
              @favicon = doc.favicon
              @author = doc.author
              @lede = doc.lede
              @description = doc.description
            end
          rescue => ex
            Stella.li ex.message
            # /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.1/lib/nokogiri/xml/fragment_handler.rb:37: [BUG] Segmentation fault
            #  ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
          end
        end
        @response_body_digest = @log.first.response_body.digest
        @log.each { |entry| entry.response_body = ''; entry.request_body = '' }
        processed!
      end