class Main

Attributes

extremely_slow[RW]
invalid[RW]
slow[RW]
valid[RW]

Public Class Methods

new(webpage, depth, proxy_host, proxy_port) click to toggle source
# File lib/driller/main.rb, line 13
def initialize(webpage, depth, proxy_host, proxy_port)
    @webpage    = webpage
    @depth      = depth
    @proxy_port = proxy_port
    @proxy_host = proxy_host

    @pageCount  = 0

    # initializing symbols
end

Public Instance Methods

execute() click to toggle source
# File lib/driller/main.rb, line 24
def execute
    puts "Webpage   : "    + @webpage
    puts "Depth     : "    + @depth

    result = Hash.new
    Anemone.crawl(@webpage) do |anemone|

        unless @proxy_host.nil?
            anemone.proxy_host = @proxy_host
            anemone.proxy_port = @proxy_port
        end

        anemone.depth_limit = @depth.to_i
        puts "============= Driller is now checking your website links. If any of the link returned non 200, it will be displayed here========="
        anemone.focus_crawl do |page|
            page.links.select { |url| url.starts_with? @webpage }
        end


        result[:valid]              = Array.new
        result[:invalid]            = Array.new
        result[:slow]               = Array.new
        result[:extremely_slow]     = Array.new

        anemone.on_every_page do |page|

            pageObject = getPageObject(page)

            if page.code == 200
                result[:valid].push(pageObject)

                # Check Response Time
                # -------------------
                # We only check response time
                # for pages which are 200
                # because there is no point of
                # optimizing error pages.

                if page.response_time > 5000
                    result[:slow].push(pageObject)

                    puts "=======Slow Page======\n"
                    puts "Time: #{page.response_time} - #{page.url}"
                elsif page.response_time > 10000
                    result[:extremely_slow].push(pageObject)

                    puts "=======Very Slow Page======\n"
                    puts "Time: #{page.response_time} - #{page.url}"
                end
                #End checking response time.

            else #404, 301, 500
                result[:invalid].push(pageObject)

                puts "======= NON-200 Page ======\n"
                puts "#{page.code} Response from : #{page.url}"
                puts

            end

        end

        @pageCount = @pageCount + 1
        puts "Checked #{@pageCount} pages" if @pageCount % 100 == 0
    end

    generateReport('valid_pages', result[:valid])
    generateReport('broken', result[:invalid])
    generateReport('slow_pages', result[:slow])
    generateReport('extremely_slow_pages', result[:extremely_slow])

end
generateReport(reportName, data) click to toggle source
# File lib/driller/main.rb, line 112
def generateReport(reportName, data)
    report = Html_Report.new(reportName, data)
    File_Handler.new(reportName, report.getReport)
end
getPageObject(page) click to toggle source
# File lib/driller/main.rb, line 97
def getPageObject(page)
    # This means we never got an access to internet
    if page.code.nil?
        abort("Error: Either you are offline or behind proxy.")
    end

    obj = Hash.new

    obj['code']             = page.code
    obj['url']              = (page.url).to_s
    obj['response_time']    = page.response_time

    return obj
end