lib/cohesion.rb in cohesion-1.0.2 vs lib/cohesion.rb in cohesion-1.0.3

- old
+ new

@@ -2,147 +2,12 @@ require "cohesion/version" require 'cobweb' require 'ptools' require 'digest/md5' +require 'cohesion/check' +require 'cohesion/cache' require 'cohesion/railtie' if defined?(Rails) module Cohesion - class Check - def self.rails_text - puts "WARNING - not working yet..." - root_path = Rails.root.to_s - Dir.glob("**/*").each do |filename| - unless File.directory?(filename) || File.binary?(filename) || filename.ends_with?(".rdb") - f = File.open(filename, "r") - content = f.read() - f.close - if content =~ /(https?:\/\/[a-zA-Z0-9\.\/\-_%&\?]+)/ - print "Checking #{$1} " - begin - status_code = Cobweb.new(:raise_exceptions => true).head($1)[:status_code].to_i - if status_code != 200 - puts " [#{status_code}] \e[31m\u2717\e[0m" - else - puts "\e[32m\u2713\e[0m" - end - rescue SocketError - status_code = 0 - puts " [DNS Failed] \e[31m\u2717\e[0m" - end - end - end - end - end - - def self.rails_object - puts "WARNING - not working yet..." - root_path = Rails.root.to_s - #app_name = Rails.application.name - #puts "Checking #{app_name}..." - app = CobwebSample::Application - app.routes.default_url_options = { :host => 'xxx.com' } - - Dir.glob("app/controllers/**/*").each do |filename| - controller_name = filename.gsub(".rb","").split("/")[-1].classify - unless controller_name == "ApplicationController" - puts "Processing #{controller_name}" - controller = controller_name.constantize.new - - view = ActionView::Base.new(ActionController::Base.view_paths, {}, controller) - - view.view_paths = ActionController::Base.view_paths - view.extend ApplicationHelper - view.controller = controller - view.class_eval do - include ApplicationHelper - include app.routes.url_helpers - end - begin - puts view.render(:template => '/tests/index.html.erb') - rescue => e - puts "Error rendering view: #{e.message}" - end - end - end - end - - def self.site(url, options={}) - errors = [] - failures = [] - - pages = {} - - options[:cache] = options[:cache].to_i if options[:cache] - crawler_options = {:cache_type => :full, :crawl_linked_external => true, :store_inbound_links => true}.merge(options) - - statistics = CobwebCrawler.new(crawler_options).crawl(url) do |page| - print page[:url] - - duplicate = !pages[Digest::MD5.hexdigest(page[:body])].nil? - pages[Digest::MD5.hexdigest(page[:body])] = [] unless pages[Digest::MD5.hexdigest(page[:body])] - pages[Digest::MD5.hexdigest(page[:body])] << page[:url] - - # if it was a 404 before, just check again not using the cache this time - if page[:status_code] == 404 - page = Cobweb.new(crawler_options.merge(:cache => nil)).get(page[:url]) - end - - if page[:status_code] == 404 || duplicate - if duplicate - puts " [duplicate] \e[31m\u2717\e[0m" - else - puts " [#{page[:status_code]}] \e[31m\u2717\e[0m" - end - failures << page - else - puts " \e[32m\u2713\e[0m" - end - end - - puts statistics.redis.namespace - puts statistics.get_statistics - - total_inbound_failures = 0 - total_failures = 0 - - issues = [] - if failures.count == 0 - puts "All links working!" - else - puts "Failed urls:" - failures.each do |f| - inbound_links = statistics.inbound_links_for(f[:url]) - issues << {:issue => f, :inbound => inbound_links} - - total_inbound_failures += inbound_links.count - total_failures += 1 - - puts "" - puts "#{f[:url]} [ #{f[:status_code]} ]" - inbound_links.each do |inbound_link| - puts " - #{inbound_link}" - end - end - - puts "" - puts "Duplicate Content" - puts "" - pages.select{|k,v| v.count > 1}.each do |k,v| - puts "Duplicate: #{k}" - v.map{|x| puts " - #{x}" } - end - - - puts "" - puts "Total Failed URLs: #{total_failures}" - puts "Total Duplicates: #{pages.map{|d| d[1]}.select{|d| d.count > 1}.inject{|total, d| total + d.count}.count}" - puts "Total Inbound Failures (Pages linking to a 404): #{total_inbound_failures}" - puts "" - end - puts - - return issues - end - end end