blinkr 0.2.9 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -0
- data/bin/blinkr +1 -0
- data/blinkr.gemspec +16 -8
- data/lib/blinkr.rb +2 -1
- data/lib/blinkr/cache.rb +5 -1
- data/lib/blinkr/config.rb +2 -1
- data/lib/blinkr/engine.rb +49 -36
- data/lib/blinkr/error.rb +30 -0
- data/lib/blinkr/extensions/a_title.rb +7 -1
- data/lib/blinkr/extensions/empty_a_href.rb +7 -1
- data/lib/blinkr/extensions/img_alt.rb +7 -1
- data/lib/blinkr/extensions/inline_css.rb +13 -2
- data/lib/blinkr/extensions/javascript.rb +5 -1
- data/lib/blinkr/extensions/links.rb +66 -22
- data/lib/blinkr/extensions/meta.rb +37 -8
- data/lib/blinkr/extensions/resources.rb +5 -1
- data/lib/blinkr/hacks.rb +20 -0
- data/lib/blinkr/http_utils.rb +10 -5
- data/lib/blinkr/manticore_wrapper.rb +59 -0
- data/lib/blinkr/phantomjs_wrapper.rb +22 -9
- data/lib/blinkr/report.html.slim +186 -210
- data/lib/blinkr/report.rb +22 -19
- data/lib/blinkr/sitemap.rb +5 -4
- data/lib/blinkr/typhoeus_wrapper.rb +19 -16
- data/lib/blinkr/version.rb +1 -1
- metadata +8 -6
- data/.gitignore +0 -18
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
data/lib/blinkr/report.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'slim'
|
2
2
|
require 'ostruct'
|
3
|
+
require 'blinkr/error'
|
3
4
|
|
4
5
|
module Blinkr
|
5
6
|
class Report
|
@@ -17,31 +18,33 @@ module Blinkr
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def render
|
20
|
-
@context.
|
21
|
-
@context.
|
22
|
-
@context.
|
23
|
-
@context.
|
24
|
-
|
21
|
+
@context.pages.delete_if { |_, page| page.errors.empty? }
|
22
|
+
@context.total = 0
|
23
|
+
@context.severity = {}
|
24
|
+
@context.category = {}
|
25
|
+
@context.type = {}
|
26
|
+
@context.pages.each do |_, page|
|
27
|
+
page.max_severity = ::Blinkr::SEVERITY.first # :success
|
25
28
|
page.errors.each do |error|
|
26
|
-
raise "#{error.severity} not a valid severity. Must be one of #{SEVERITY.join(',')}" unless SEVERITY.include? error.severity
|
29
|
+
raise "#{error.severity} not a valid severity. Must be one of #{::Blinkr::SEVERITY.join(',')}" unless ::Blinkr::SEVERITY.include? error.severity
|
27
30
|
raise "#{error.category} must be specified." if error.category.nil?
|
28
|
-
@context.
|
29
|
-
@context.
|
30
|
-
|
31
|
-
|
32
|
-
@context.
|
33
|
-
@context.
|
34
|
-
@context.
|
31
|
+
@context.total += 1
|
32
|
+
@context.severity[error.severity] ||= OpenStruct.new({:count => 0})
|
33
|
+
@context.severity[error.severity].count += 1
|
34
|
+
page.max_severity = error.severity if ::Blinkr::SEVERITY.index(error.severity) > ::Blinkr::SEVERITY.index(page.max_severity)
|
35
|
+
@context.category[error.category] ||= OpenStruct.new({:count => 0})
|
36
|
+
@context.category[error.category].count += 1
|
37
|
+
@context.type[error.type] ||= OpenStruct.new({:count => 0})
|
38
|
+
@context.type[error.type].count += 1
|
35
39
|
end
|
36
40
|
end
|
37
|
-
|
38
|
-
|
41
|
+
File.open(@config.report, 'w') do |file|
|
42
|
+
file.write(Slim::Template.new(TMPL).render(OpenStruct.new({:blinkr => @context, :engine => @engine,
|
43
|
+
:errors => @context.to_json})))
|
44
|
+
end
|
45
|
+
|
39
46
|
puts "Wrote report to #{@config.report}" if @config.verbose
|
40
47
|
end
|
41
48
|
|
42
|
-
private
|
43
|
-
|
44
|
-
SEVERITY = ['success', 'info', 'warning', 'danger']
|
45
|
-
|
46
49
|
end
|
47
50
|
end
|
data/lib/blinkr/sitemap.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
|
+
require 'open-uri'
|
1
2
|
module Blinkr
|
2
3
|
module Sitemap
|
3
4
|
|
4
5
|
def sitemap_locations
|
5
|
-
|
6
|
+
open_sitemap.css('loc').collect { |loc| loc.content }
|
6
7
|
end
|
7
8
|
|
8
9
|
private
|
9
|
-
|
10
|
-
def
|
10
|
+
|
11
|
+
def open_sitemap
|
11
12
|
puts "Loading sitemap from #{@config.sitemap}"
|
12
13
|
if @config.sitemap =~ URI::regexp
|
13
|
-
Nokogiri::XML(
|
14
|
+
Nokogiri::XML(open(@config.sitemap).read)
|
14
15
|
else
|
15
16
|
Nokogiri::XML(File.open(@config.sitemap))
|
16
17
|
end
|
@@ -1,6 +1,3 @@
|
|
1
|
-
require 'typhoeus/request'
|
2
|
-
require 'typhoeus/response'
|
3
|
-
require 'typhoeus/hydra'
|
4
1
|
require 'typhoeus'
|
5
2
|
require 'blinkr/cache'
|
6
3
|
require 'blinkr/http_utils'
|
@@ -11,24 +8,30 @@ module Blinkr
|
|
11
8
|
|
12
9
|
attr_reader :count, :hydra
|
13
10
|
|
14
|
-
def initialize
|
11
|
+
def initialize(config, context)
|
15
12
|
@config = config.validate
|
16
|
-
|
13
|
+
# Configure Typhoeus a bit
|
14
|
+
Typhoeus::Config.verbose = true if config.vverbose
|
15
|
+
Typhoeus::Config.cache = Blinkr::Cache.new
|
16
|
+
@hydra = Typhoeus::Hydra.new(:maxconnects => (@config.maxconnects || 30),
|
17
|
+
:max_total_connections => (@config.maxconnects || 30),
|
18
|
+
:max_concurrency => (@config.maxconnects || 30))
|
17
19
|
@count = 0
|
18
20
|
@context = context
|
19
21
|
end
|
20
22
|
|
21
|
-
def process_all
|
23
|
+
def process_all(urls, limit, opts = {}, &block)
|
22
24
|
urls.each do |url|
|
23
|
-
process url, limit, &block
|
25
|
+
process url, limit, opts, &block
|
24
26
|
end
|
27
|
+
@hydra.run
|
25
28
|
end
|
26
29
|
|
27
|
-
def process
|
28
|
-
_process url, limit, limit, &block
|
30
|
+
def process(url, limit, opts = {}, &block)
|
31
|
+
_process url, limit, limit, opts, &block
|
29
32
|
end
|
30
33
|
|
31
|
-
def debug
|
34
|
+
def debug(url)
|
32
35
|
process(url, @config.max_retrys) do |resp|
|
33
36
|
puts "\n++++++++++"
|
34
37
|
puts "+ Blinkr +"
|
@@ -65,21 +68,21 @@ module Blinkr
|
|
65
68
|
|
66
69
|
private
|
67
70
|
|
68
|
-
def _process
|
71
|
+
def _process(url, limit, max, opts = {}, &block)
|
69
72
|
unless @config.skipped? url
|
70
73
|
req = Typhoeus::Request.new(
|
71
|
-
|
72
|
-
|
73
|
-
verbose: @config.vverbose
|
74
|
+
url,
|
75
|
+
opts.merge(:followlocation => true)
|
74
76
|
)
|
75
77
|
req.on_complete do |resp|
|
76
78
|
if retry? resp
|
77
|
-
if limit > 1
|
79
|
+
if limit > 1
|
78
80
|
puts "Loading #{url} via typhoeus (attempt #{max - limit + 2} of #{max})" if @config.verbose
|
79
81
|
_process(url, limit - 1, max, &Proc.new)
|
80
82
|
else
|
81
83
|
puts "Loading #{url} via typhoeus failed" if @config.verbose
|
82
|
-
response = Typhoeus::Response.new(code
|
84
|
+
response = Typhoeus::Response.new(:code => 0, :status_message => "Server timed out after #{max} retries",
|
85
|
+
:mock => true)
|
83
86
|
response.request = Typhoeus::Request.new(url)
|
84
87
|
Typhoeus.stub(url).and_return(response)
|
85
88
|
block.call response, nil, nil
|
data/lib/blinkr/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blinkr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pete Muir
|
8
|
+
- Jason Porter
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2015-
|
12
|
+
date: 2015-07-06 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
@@ -99,14 +100,12 @@ description: A broken page and link checker for websites. Optionally uses phanto
|
|
99
100
|
page load errors.
|
100
101
|
email:
|
101
102
|
- pmuir@bleepbleep.org.uk
|
103
|
+
- lightguard.jp@gmail.com
|
102
104
|
executables:
|
103
105
|
- blinkr
|
104
106
|
extensions: []
|
105
107
|
extra_rdoc_files: []
|
106
108
|
files:
|
107
|
-
- ".gitignore"
|
108
|
-
- ".ruby-gemset"
|
109
|
-
- ".ruby-version"
|
110
109
|
- Gemfile
|
111
110
|
- LICENSE.txt
|
112
111
|
- README.md
|
@@ -117,6 +116,7 @@ files:
|
|
117
116
|
- lib/blinkr/cache.rb
|
118
117
|
- lib/blinkr/config.rb
|
119
118
|
- lib/blinkr/engine.rb
|
119
|
+
- lib/blinkr/error.rb
|
120
120
|
- lib/blinkr/extensions/a_title.rb
|
121
121
|
- lib/blinkr/extensions/empty_a_href.rb
|
122
122
|
- lib/blinkr/extensions/img_alt.rb
|
@@ -127,7 +127,9 @@ files:
|
|
127
127
|
- lib/blinkr/extensions/meta.rb
|
128
128
|
- lib/blinkr/extensions/pipeline.rb
|
129
129
|
- lib/blinkr/extensions/resources.rb
|
130
|
+
- lib/blinkr/hacks.rb
|
130
131
|
- lib/blinkr/http_utils.rb
|
132
|
+
- lib/blinkr/manticore_wrapper.rb
|
131
133
|
- lib/blinkr/phantomjs_wrapper.rb
|
132
134
|
- lib/blinkr/report.html.slim
|
133
135
|
- lib/blinkr/report.rb
|
@@ -147,7 +149,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
149
|
requirements:
|
148
150
|
- - "~>"
|
149
151
|
- !ruby/object:Gem::Version
|
150
|
-
version: '
|
152
|
+
version: '1.9'
|
151
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
154
|
requirements:
|
153
155
|
- - ">="
|
data/.gitignore
DELETED
data/.ruby-gemset
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
blink
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
ruby-2.1.2
|