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.
Files changed (5) hide show
  1. data/README.rdoc +39 -0
  2. data/Rakefile +38 -0
  3. data/bin/golia +71 -0
  4. data/golia.gemspec +15 -0
  5. 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
+