blinkr 0.3.3 → 0.3.4
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.
- checksums.yaml +4 -4
- data/lib/blinkr/config.rb +3 -1
- data/lib/blinkr/extensions/links.rb +13 -7
- data/lib/blinkr/extensions/meta.rb +7 -7
- data/lib/blinkr/http_utils.rb +6 -0
- data/lib/blinkr/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1df6688e98868b28398b0bb8cd3e31f4ad47e450
|
4
|
+
data.tar.gz: d21bfa1954fbf9f2328c0baefefaff23eee6c98c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9db0fb41e32a587e2f20384473ed72642113a35545688f2777de887cb5a085be94baab09ff92832649a8618a927ac6b4f1977f9feb0da34f1ea98210e4812d8a
|
7
|
+
data.tar.gz: e2bf502da1bf99a5e98120c934cd0d9507a9afd37bfe1fcf3a43f17cb29cb86f3eb979b921ea4dfbcc7894b514f93b689574c5f4ade17696dd7cb9e980904f2a
|
data/lib/blinkr/config.rb
CHANGED
@@ -9,7 +9,9 @@ module Blinkr
|
|
9
9
|
end
|
10
10
|
|
11
11
|
DEFAULTS = {:skips => [], :ignores => [], :max_retrys => 3, :browser => 'typhoeus',
|
12
|
-
:viewport => 1200, :phantomjs_threads => 8, :report => 'blinkr.html'
|
12
|
+
:viewport => 1200, :phantomjs_threads => 8, :report => 'blinkr.html',
|
13
|
+
:warning_on_300s => false
|
14
|
+
}
|
13
15
|
|
14
16
|
def initialize(hash={})
|
15
17
|
super(DEFAULTS.merge(hash))
|
@@ -37,9 +37,14 @@ module Blinkr
|
|
37
37
|
processed = 0
|
38
38
|
# Find the internal links
|
39
39
|
@links.select{|k| k.start_with? @config.base_url}.each do |url, locations|
|
40
|
+
# TODO figure out what to do about relative links
|
40
41
|
link = URI.parse(url)
|
42
|
+
|
43
|
+
# fix up links so they're proper, also drop fragments and queries as they won't be in the sitemap that way
|
41
44
|
link.fragment = nil
|
42
45
|
link.query = nil
|
46
|
+
link.path = link.path.gsub(/\/+/, '/') if link.path
|
47
|
+
|
43
48
|
unless context.pages.keys.include?(link.to_s) || context.pages.keys.include?((link.to_s + '/'))
|
44
49
|
locations.each do |location|
|
45
50
|
location[:page].errors << Blinkr::Error.new({:severity => :warning,
|
@@ -60,10 +65,11 @@ module Blinkr
|
|
60
65
|
external_links.each do |url, metadata|
|
61
66
|
# if link start_with? @config.base_url check to see if it's in the sitemap.xml
|
62
67
|
browser.process(url, @config.max_retrys, :method => :get, :followlocation => true, :timeout => 30,
|
68
|
+
:cookiefile => '_tmp/cookies', :cookiejar => '_tmp/cookies',
|
63
69
|
:connecttimeout => 10, :maxredirs => 3) do |resp|
|
64
70
|
puts "Loaded #{url} via #{browser.name} #{'(cached)' if resp.cached?}" if @config.verbose
|
65
71
|
|
66
|
-
if resp.code.to_i < 200 || resp.code.to_i > 300
|
72
|
+
if resp.code.to_i < 200 || (resp.code.to_i > 300 && @config.warning_on_300s)
|
67
73
|
response = resp
|
68
74
|
|
69
75
|
metadata.each do |src|
|
@@ -80,12 +86,12 @@ module Blinkr
|
|
80
86
|
severity = :warning
|
81
87
|
end
|
82
88
|
src[:page].errors << Blinkr::Error.new({:severity => severity,
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
+
:category => 'Resources missing',
|
90
|
+
:type => '<a href=""> target cannot be loaded',
|
91
|
+
:url => url, :title => "#{url} (line #{src[:line]})",
|
92
|
+
:code => response.code.to_i, :message => message,
|
93
|
+
:detail => detail, :snippet => src[:snippet],
|
94
|
+
:icon => 'fa-bookmark-o'}) unless response.success?
|
89
95
|
end
|
90
96
|
end
|
91
97
|
processed += 1
|
@@ -39,7 +39,7 @@ module Blinkr
|
|
39
39
|
lines << elm.line
|
40
40
|
snippets << elm.to_s
|
41
41
|
end
|
42
|
-
page.errors << Blinkr::Error.new({:severity => :
|
42
|
+
page.errors << Blinkr::Error.new({:severity => :danger, :category => 'HTML Compatibility/Correctness',
|
43
43
|
:type => '<title> tag declared more than once',
|
44
44
|
:title => %Q{<title> declared more than once (lines #{lines.join(', ')})},
|
45
45
|
:message => %Q{<title> declared more than onc},
|
@@ -53,13 +53,13 @@ module Blinkr
|
|
53
53
|
@titles[title] ||= {}
|
54
54
|
@titles[title][page.response.effective_url] = page
|
55
55
|
if title.length < 20
|
56
|
-
page.errors << Blinkr::Error.new({:severity => :
|
56
|
+
page.errors << Blinkr::Error.new({:severity => :warning, :category => 'SEO', :type => 'page title too short',
|
57
57
|
:title => %Q{<title> too short (line #{elms.first.line})},
|
58
58
|
:message => %Q{<title> too short (< 20 characters)},
|
59
59
|
:snippet => elms.first.to_s, :icon => 'fa-header'})
|
60
60
|
end
|
61
61
|
if title.length > 55
|
62
|
-
page.errors << Blinkr::Error.new({:severity => :
|
62
|
+
page.errors << Blinkr::Error.new({:severity => :warning, :category => 'SEO', :type => 'page title too long',
|
63
63
|
:title => %Q{<title> too long (line #{elms.first.line})},
|
64
64
|
:message => %Q{<title> too long (> 55 characters)},
|
65
65
|
:snippet => elms.first.to_s, :icon => 'fa-header'})
|
@@ -76,13 +76,13 @@ module Blinkr
|
|
76
76
|
lines << elm.line
|
77
77
|
snippets << elm.to_s
|
78
78
|
end
|
79
|
-
page.errors << Blinkr::Error.new({:severity => :
|
79
|
+
page.errors << Blinkr::Error.new({:severity => :danger, :category => 'HTML Compatibility/Correctness',
|
80
80
|
:type => '<meta name="description"> tag declared more than once',
|
81
81
|
:title => %Q{<meta name="description"> tag declared more than once (lines #{lines.join(', ')})},
|
82
82
|
:message => %Q{<meta name="description"> tag declared more than once},
|
83
83
|
:snippet => snippets.join('\n'), :icon => 'fa-header'})
|
84
84
|
elsif elms.empty?
|
85
|
-
page.errors << Blinkr::Error.new({:severity => :
|
85
|
+
page.errors << Blinkr::Error.new({:severity => :warning, :category => 'SEO',
|
86
86
|
:type => '<meta name="description"> tag missing',
|
87
87
|
:title => %Q{<meta name="description"> tag missing},
|
88
88
|
:message => %Q{<meta name="description"> tag missing},
|
@@ -92,14 +92,14 @@ module Blinkr
|
|
92
92
|
@descriptions[desc] ||= {}
|
93
93
|
@descriptions[desc][page.response.effective_url] = page
|
94
94
|
if desc.length < 60
|
95
|
-
page.errors << Blinkr::Error.new({:severity => :
|
95
|
+
page.errors << Blinkr::Error.new({:severity => :warning, :category => 'SEO',
|
96
96
|
:type => '<meta name="description"> too short',
|
97
97
|
:title => %Q{<meta name="description"> too short (lines #{elms.first.line})},
|
98
98
|
:message => %Q{<meta name="description"> too short (< 60 characters)},
|
99
99
|
:snippet => elms.first.to_s, :icon => 'fa-header'})
|
100
100
|
end
|
101
101
|
if desc.length > 115
|
102
|
-
page.errors << Blinkr::Error.new({:severity => :
|
102
|
+
page.errors << Blinkr::Error.new({:severity => :warning, :category => 'SEO',
|
103
103
|
:type => '<meta name="description"> too long',
|
104
104
|
:title => %Q{<meta name="description"> too long (lines #{elms.first.line})},
|
105
105
|
:message => %Q{<meta name="description"> too long (> 115 characters)},
|
data/lib/blinkr/http_utils.rb
CHANGED
@@ -30,6 +30,12 @@ module Blinkr
|
|
30
30
|
# If we have an absolute path URI, join it to the base URL
|
31
31
|
dest_uri = URI.join(base_uri.scheme, base_uri.hostname, base_uri.port, dest_uri) if empty?(dest_uri.scheme) && empty?(dest_uri.hostname)
|
32
32
|
|
33
|
+
# switch multiple '/' to just one. Those types of URIs don't affect the browser,
|
34
|
+
# but they do affect our checking
|
35
|
+
dest_uri.path = dest_uri.path.gsub(/\/+/, '/') if dest_uri.path
|
36
|
+
dest_uri.query = dest_uri.query.gsub(/\/+/, '/') if dest_uri.query
|
37
|
+
dest_uri.fragment = dest_uri.query.gsub(/\/+/, '/') if dest_uri.fragment
|
38
|
+
|
33
39
|
dest = dest_uri.to_s
|
34
40
|
rescue URI::InvalidURIError, URI::InvalidComponentError, URI::BadURIError
|
35
41
|
# ignored
|
data/lib/blinkr/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blinkr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pete Muir
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-08-
|
12
|
+
date: 2015-08-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|