golia 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +39 -0
 - data/Rakefile +38 -0
 - data/bin/golia +71 -0
 - data/golia.gemspec +15 -0
 - metadata +69 -0
 
    
        data/README.rdoc
    ADDED
    
    | 
         @@ -0,0 +1,39 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            = GOLIA
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Golia is an website performance analyzer. Check <b>speed</b> and <b>dead</b> links.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            == Usage
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
             $ gem install golia
         
     | 
| 
      
 8 
     | 
    
         
            +
             $ golia www.padrinorb.com
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            You see an output like that:
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              Valid (1.01ms) http://padrinorb.com/guides/blog-tutorial
         
     | 
| 
      
 13 
     | 
    
         
            +
              Valid (0.75ms) http://padrinorb.com/guides
         
     | 
| 
      
 14 
     | 
    
         
            +
              Valid (0.86ms) http://padrinorb.com/pages/contribute
         
     | 
| 
      
 15 
     | 
    
         
            +
              Valid (0.71ms) http://padrinorb.com/guides/padrino-admin
         
     | 
| 
      
 16 
     | 
    
         
            +
              Valid (0.82ms) http://padrinorb.com/api
         
     | 
| 
      
 17 
     | 
    
         
            +
              Valid (0.81ms) http://padrinorb.com/guides/generators
         
     | 
| 
      
 18 
     | 
    
         
            +
              Valid (0.82ms) http://padrinorb.com/guides/controllers
         
     | 
| 
      
 19 
     | 
    
         
            +
              Valid (0.70ms) http://padrinorb.com/guides/home
         
     | 
| 
      
 20 
     | 
    
         
            +
              Valid (0.98ms) http://padrinorb.com/guides/basic-projects
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              ======== SUMMARY ========
         
     | 
| 
      
 23 
     | 
    
         
            +
              Valid Links: 46
         
     | 
| 
      
 24 
     | 
    
         
            +
              Invalid Links: 1
         
     | 
| 
      
 25 
     | 
    
         
            +
                http://padrinorb.com/hhttps://github.com/apeacox/picciotto
         
     | 
| 
      
 26 
     | 
    
         
            +
              Long requests: 4
         
     | 
| 
      
 27 
     | 
    
         
            +
                http://padrinorb.com/guides/blog-tutorial
         
     | 
| 
      
 28 
     | 
    
         
            +
                http://padrinorb.com/changes
         
     | 
| 
      
 29 
     | 
    
         
            +
                http://padrinorb.com/guides/mounting-applications
         
     | 
| 
      
 30 
     | 
    
         
            +
                http://padrinorb.com/blog
         
     | 
| 
      
 31 
     | 
    
         
            +
              Average load time 0.80ms
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            == Future
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            In future we will add w3c validations.
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            == Credits
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            This software is created by DAddYE under MIT LICENSE.
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems/specification'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake/gempackagetask'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rake'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            def gemspec
         
     | 
| 
      
 6 
     | 
    
         
            +
              @gemspec ||= begin
         
     | 
| 
      
 7 
     | 
    
         
            +
                file = File.expand_path("golia.gemspec")
         
     | 
| 
      
 8 
     | 
    
         
            +
                ::Gem::Specification.load(file)
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
            end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            desc "Validates the gemspec"
         
     | 
| 
      
 13 
     | 
    
         
            +
            task :gemspec do
         
     | 
| 
      
 14 
     | 
    
         
            +
              gemspec.validate
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            desc "Displays the current version"
         
     | 
| 
      
 18 
     | 
    
         
            +
            task :version do
         
     | 
| 
      
 19 
     | 
    
         
            +
              puts "Current version: #{gemspec.version}"
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            desc "Release the gem"
         
     | 
| 
      
 23 
     | 
    
         
            +
            task :release => :package do
         
     | 
| 
      
 24 
     | 
    
         
            +
              sh "gem push pkg/#{gemspec.name}-#{gemspec.version}.gem"
         
     | 
| 
      
 25 
     | 
    
         
            +
              sh "rm -rf pkg"
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            desc "Installs the gem locally"
         
     | 
| 
      
 29 
     | 
    
         
            +
            task :install => :package do
         
     | 
| 
      
 30 
     | 
    
         
            +
              sh "gem install pkg/#{gemspec.name}-#{gemspec.version}"
         
     | 
| 
      
 31 
     | 
    
         
            +
              sh "rm -rf pkg"
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            Rake::GemPackageTask.new(gemspec) do |pkg|
         
     | 
| 
      
 35 
     | 
    
         
            +
              pkg.gem_spec = gemspec
         
     | 
| 
      
 36 
     | 
    
         
            +
            end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            task :package => :gemspec
         
     | 
    
        data/bin/golia
    ADDED
    
    | 
         @@ -0,0 +1,71 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'open-uri'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'net/http'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'benchmark'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'tmpdir'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            puts "You need to pass a domain ex: www.lipsiasoft.com" and exit unless ARGV[0]
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            @host = ARGV[0]
         
     | 
| 
      
 12 
     | 
    
         
            +
            @host = "http://#{@host}" unless @host =~ /^http/
         
     | 
| 
      
 13 
     | 
    
         
            +
            @pid  = "#{Dir.tmpdir}/golia-#{@host.gsub(/^http:\/\//, '')}"
         
     | 
| 
      
 14 
     | 
    
         
            +
            @checked, @links, @invalid, @valid, @long, @ms = [], [], [], [], [], []
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            if File.exist?(@pid)
         
     | 
| 
      
 17 
     | 
    
         
            +
              puts "<= Founded staled pid"
         
     | 
| 
      
 18 
     | 
    
         
            +
              Process.kill(9, File.read(@pid).to_i) rescue nil
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            trap("INT") { puts "<= Golia has ended his set (crowd applauds)"; remove_pid; Process.kill(9, Process.pid) }
         
     | 
| 
      
 22 
     | 
    
         
            +
            File.open(@pid, "w") { |f| f.write Process.pid }
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            def remove_pid
         
     | 
| 
      
 25 
     | 
    
         
            +
              FileUtils.rm_rf(@pid)
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            def parse!(url)
         
     | 
| 
      
 29 
     | 
    
         
            +
              begun_at = Time.now
         
     | 
| 
      
 30 
     | 
    
         
            +
              response = open(url)
         
     | 
| 
      
 31 
     | 
    
         
            +
              @ms << Time.now-begun_at
         
     | 
| 
      
 32 
     | 
    
         
            +
              body  = response.read
         
     | 
| 
      
 33 
     | 
    
         
            +
              links = body.scan(/<a.+?href=["'](.+?)["']/m).flatten
         
     | 
| 
      
 34 
     | 
    
         
            +
              links.reject! { |link| link =~ /^\/$|^http|^mailto|^javascript|#/ || File.extname(link) != "" }
         
     | 
| 
      
 35 
     | 
    
         
            +
              links.map! { |link| link = "/"+link if link !~ /^\//; @host+link }
         
     | 
| 
      
 36 
     | 
    
         
            +
              @links.concat(links-@checked)
         
     | 
| 
      
 37 
     | 
    
         
            +
            end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            parse!(@host)
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            loop do
         
     | 
| 
      
 42 
     | 
    
         
            +
              break if @links.empty?
         
     | 
| 
      
 43 
     | 
    
         
            +
              @links.each do |link|
         
     | 
| 
      
 44 
     | 
    
         
            +
                begin
         
     | 
| 
      
 45 
     | 
    
         
            +
                  @checked << link
         
     | 
| 
      
 46 
     | 
    
         
            +
                  parse!(link)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  @valid << link
         
     | 
| 
      
 48 
     | 
    
         
            +
                  @long  << link if @ms.last > 1
         
     | 
| 
      
 49 
     | 
    
         
            +
                  puts "\e[32mValid\e[0m (%0.2fms) %s" % [@ms.last, link]
         
     | 
| 
      
 50 
     | 
    
         
            +
                rescue Exception => e
         
     | 
| 
      
 51 
     | 
    
         
            +
                  @invalid << link
         
     | 
| 
      
 52 
     | 
    
         
            +
                  puts "\e[31mInvalid\e[0m %s - %s" % [link, e.message]
         
     | 
| 
      
 53 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 54 
     | 
    
         
            +
                  @links.delete(link)
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
| 
      
 58 
     | 
    
         
            +
            puts
         
     | 
| 
      
 59 
     | 
    
         
            +
            puts "======== SUMMARY ========"
         
     | 
| 
      
 60 
     | 
    
         
            +
            puts "Valid Links: %d" % @valid.size
         
     | 
| 
      
 61 
     | 
    
         
            +
            puts "Invalid Links: %d" % @invalid.size
         
     | 
| 
      
 62 
     | 
    
         
            +
            @invalid.each do |link|
         
     | 
| 
      
 63 
     | 
    
         
            +
              puts "  #{link}"
         
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
      
 65 
     | 
    
         
            +
            puts "Long requests: %d" % @long.size
         
     | 
| 
      
 66 
     | 
    
         
            +
            @long.each do |link|
         
     | 
| 
      
 67 
     | 
    
         
            +
              puts "  #{link}"
         
     | 
| 
      
 68 
     | 
    
         
            +
            end
         
     | 
| 
      
 69 
     | 
    
         
            +
            puts "Average load time %0.2fms" % (@ms.inject(0) { |memo, ms| memo+=ms; memo }/@ms.size)
         
     | 
| 
      
 70 
     | 
    
         
            +
            puts
         
     | 
| 
      
 71 
     | 
    
         
            +
            remove_pid
         
     | 
    
        data/golia.gemspec
    ADDED
    
    | 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 2 
     | 
    
         
            +
              s.name = "golia"
         
     | 
| 
      
 3 
     | 
    
         
            +
              s.rubyforge_project = "golia"
         
     | 
| 
      
 4 
     | 
    
         
            +
              s.authors = ["DAddYE"]
         
     | 
| 
      
 5 
     | 
    
         
            +
              s.email = "d.dagostino@lipsiasoft.com"
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.summary = "Dead Links Checker and Speed Analyzer"
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.homepage = "http://www.padrinorb.com"
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.description = "Golia is an website performance analyzer. Check speed and dead links."
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.default_executable = "golia"
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.executables = ["golia"]
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.version = "1.0"
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = Time.now.strftime("%Y-%m-%d")
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.extra_rdoc_files = Dir["*.rdoc"]
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.files = %w(README.rdoc Rakefile golia.gemspec)
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,69 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: golia
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 15
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
      
 6 
     | 
    
         
            +
              segments: 
         
     | 
| 
      
 7 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: "1.0"
         
     | 
| 
      
 10 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 11 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 12 
     | 
    
         
            +
            - DAddYE
         
     | 
| 
      
 13 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 14 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 15 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            date: 2011-04-12 00:00:00 +02:00
         
     | 
| 
      
 18 
     | 
    
         
            +
            default_executable: golia
         
     | 
| 
      
 19 
     | 
    
         
            +
            dependencies: []
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            description: Golia is an website performance analyzer. Check speed and dead links.
         
     | 
| 
      
 22 
     | 
    
         
            +
            email: d.dagostino@lipsiasoft.com
         
     | 
| 
      
 23 
     | 
    
         
            +
            executables: 
         
     | 
| 
      
 24 
     | 
    
         
            +
            - golia
         
     | 
| 
      
 25 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            extra_rdoc_files: 
         
     | 
| 
      
 28 
     | 
    
         
            +
            - README.rdoc
         
     | 
| 
      
 29 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 30 
     | 
    
         
            +
            - README.rdoc
         
     | 
| 
      
 31 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 32 
     | 
    
         
            +
            - golia.gemspec
         
     | 
| 
      
 33 
     | 
    
         
            +
            - bin/golia
         
     | 
| 
      
 34 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 35 
     | 
    
         
            +
            homepage: http://www.padrinorb.com
         
     | 
| 
      
 36 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 39 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 42 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 43 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 44 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 45 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 46 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 47 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 48 
     | 
    
         
            +
                  hash: 3
         
     | 
| 
      
 49 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 50 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 51 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 52 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 53 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 54 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 55 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 56 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 57 
     | 
    
         
            +
                  hash: 3
         
     | 
| 
      
 58 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 59 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 60 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 61 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            rubyforge_project: golia
         
     | 
| 
      
 64 
     | 
    
         
            +
            rubygems_version: 1.5.2
         
     | 
| 
      
 65 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 66 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 67 
     | 
    
         
            +
            summary: Dead Links Checker and Speed Analyzer
         
     | 
| 
      
 68 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     |