metainspector 5.4.1 → 5.4.2
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/.travis.yml +5 -4
- data/README.md +1 -3
- data/examples/link_checker.rb +1 -1
- data/examples/spider.rb +8 -4
- data/lib/meta_inspector/parsers/images.rb +6 -1
- data/lib/meta_inspector/version.rb +1 -1
- data/meta_inspector.gemspec +0 -1
- data/spec/fixtures/meta_tags_empty.response +53 -0
- data/spec/meta_inspector/head_links_spec.rb +0 -1
- data/spec/meta_inspector/images_spec.rb +6 -1
- data/spec/meta_inspector/meta_tags_spec.rb +0 -1
- data/spec/meta_inspector/redirections_spec.rb +0 -6
- data/spec/request_spec.rb +2 -3
- data/spec/spec_helper.rb +62 -107
- metadata +3 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc1180957b70b2fddea3607fcbcd0cf9c6be46fe
|
4
|
+
data.tar.gz: 433b5a354c38e0c5dc75b7698e0310b19de4f7bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c0373ba9ad2b88be80ae08b8f5f4eb5e2c64fb01497a3c7f6934c42ea077c33f84051d94ded182c00326cd234e4587de3d7f932483540f4368256539846fca0
|
7
|
+
data.tar.gz: 60bae22abc575ef14bb5291f7c9eccd94b8f1f6db63bfb5d617d6f557eed6554a3f175587aad0dbfcbb8ef7e1102e4732b8e81431e6ed9d6ba26c735a6cc1eb9
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -22,8 +22,6 @@ If you're using it on a Rails application, just add it to your Gemfile and run `
|
|
22
22
|
gem 'metainspector'
|
23
23
|
```
|
24
24
|
|
25
|
-
This gem is tested on Ruby versions 2.0.0, 2.1.8 and 2.2.4.
|
26
|
-
|
27
25
|
## Usage
|
28
26
|
|
29
27
|
Initialize a MetaInspector instance for an URL, like this:
|
@@ -438,7 +436,7 @@ You can also come to chat with us on our [Gitter room](https://gitter.im/jaimein
|
|
438
436
|
* [go-metainspector](https://github.com/fern4lvarez/go-metainspector), a port of MetaInspector for Go.
|
439
437
|
* [Node-MetaInspector](https://github.com/gabceb/node-metainspector), a port of MetaInspector for Node.
|
440
438
|
* [MetaInvestigator](https://github.com/nekova/metainvestigator), a port of MetaInspector for Elixir.
|
441
|
-
* [Funkspector]
|
439
|
+
* [Funkspector](https://github.com/jaimeiniesta/funkspector), another port of MetaInspector for Elixir.
|
442
440
|
|
443
441
|
## License
|
444
442
|
MetaInspector is released under the [MIT license](MIT-LICENSE).
|
data/examples/link_checker.rb
CHANGED
data/examples/spider.rb
CHANGED
@@ -27,10 +27,14 @@ while queue.any?
|
|
27
27
|
|
28
28
|
puts "VISITED: #{url}"
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
begin
|
31
|
+
page = MetaInspector.new(url)
|
32
|
+
|
33
|
+
page.links.internal.each do |link|
|
34
|
+
queue.push(link) unless visited.include?(link) || queue.include?(link)
|
35
|
+
end
|
36
|
+
rescue MetaInspector::ParserError
|
37
|
+
puts "Couldn't get links from #{url}, skipping"
|
34
38
|
end
|
35
39
|
|
36
40
|
puts "#{visited.size} pages visited, #{queue.size} pages on queue\n\n"
|
@@ -28,7 +28,7 @@ module MetaInspector
|
|
28
28
|
# See doc at http://developers.facebook.com/docs/opengraph/
|
29
29
|
# If none found, tries with Twitter image
|
30
30
|
def owner_suggested
|
31
|
-
suggested_img = meta['og:image'] || meta['twitter:image']
|
31
|
+
suggested_img = content_of(meta['og:image']) || content_of(meta['twitter:image'])
|
32
32
|
URL.absolutify(suggested_img, base_url) if suggested_img
|
33
33
|
end
|
34
34
|
|
@@ -89,6 +89,11 @@ module MetaInspector
|
|
89
89
|
def parsed_images
|
90
90
|
cleanup(parsed.search('//img/@src'))
|
91
91
|
end
|
92
|
+
|
93
|
+
def content_of(content)
|
94
|
+
return nil if content.nil? || content.empty?
|
95
|
+
content
|
96
|
+
end
|
92
97
|
end
|
93
98
|
end
|
94
99
|
end
|
data/meta_inspector.gemspec
CHANGED
@@ -25,7 +25,6 @@ Gem::Specification.new do |gem|
|
|
25
25
|
gem.add_dependency 'nesty', '~> 1.0'
|
26
26
|
|
27
27
|
gem.add_development_dependency 'rspec', '~> 3.0'
|
28
|
-
gem.add_development_dependency 'fakeweb', '1.3.0'
|
29
28
|
gem.add_development_dependency 'webmock'
|
30
29
|
gem.add_development_dependency 'awesome_print'
|
31
30
|
gem.add_development_dependency 'rake', '~> 10.1.0'
|
@@ -0,0 +1,53 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Age: 13
|
3
|
+
Cache-Control: max-age=120
|
4
|
+
Content-Type: text/html
|
5
|
+
Date: Mon, 06 Jan 2014 12:47:42 GMT
|
6
|
+
Expires: Mon, 06 Jan 2014 12:49:28 GMT
|
7
|
+
Server: Apache/2.2.14 (Ubuntu)
|
8
|
+
Vary: Accept-Encoding
|
9
|
+
Via: 1.1 varnish
|
10
|
+
X-Powered-By: PHP/5.3.2-1ubuntu4.22
|
11
|
+
X-Varnish: 1188792404 1188790413
|
12
|
+
Content-Length: 40571
|
13
|
+
Connection: keep-alive
|
14
|
+
|
15
|
+
<!DOCTYPE html>
|
16
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
|
17
|
+
<head>
|
18
|
+
<!-- meta name examples -->
|
19
|
+
|
20
|
+
<meta name="keywords" content="" />
|
21
|
+
<meta name="description" content="" />
|
22
|
+
<meta name="author" content="" />
|
23
|
+
<meta name="robots" content="" />
|
24
|
+
<meta name="revisit" content="" />
|
25
|
+
<meta name="DC.date.issued" content="">
|
26
|
+
|
27
|
+
<!-- meta http-equiv examples -->
|
28
|
+
|
29
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
30
|
+
<meta http-equiv="Content-Style-Type" content="text/css" />
|
31
|
+
|
32
|
+
<!-- meta charset examples -->
|
33
|
+
|
34
|
+
<meta charset="UTF-8" />
|
35
|
+
|
36
|
+
<!-- meta property examples -->
|
37
|
+
|
38
|
+
<meta property="og:title" content="" />
|
39
|
+
<meta property="og:type" content="" />
|
40
|
+
<meta property="og:url" content="" />
|
41
|
+
|
42
|
+
<meta property="og:image" content="" />
|
43
|
+
<meta property="og:image:width" content="" />
|
44
|
+
<meta property="og:image:height" content="" />
|
45
|
+
|
46
|
+
<meta property="twitter:image" content="" />
|
47
|
+
|
48
|
+
</head>
|
49
|
+
<body>
|
50
|
+
<p>A sample page with many types of empty meta tags and an image to fallback to</p>
|
51
|
+
<img src="/100x100" />
|
52
|
+
</body>
|
53
|
+
</html>
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe MetaInspector do
|
4
|
-
|
5
4
|
describe "#images" do
|
6
5
|
describe "returns an Enumerable" do
|
7
6
|
let(:page) { MetaInspector.new('https://twitter.com/markupvalidator') }
|
@@ -89,6 +88,12 @@ describe MetaInspector do
|
|
89
88
|
expect(page.images.best).to eq("http://example.com/100x100")
|
90
89
|
end
|
91
90
|
|
91
|
+
it "should find image when og:image and twitter:image metatags are present but empty" do
|
92
|
+
page = MetaInspector.new('http://example.com/meta_tags_empty')
|
93
|
+
|
94
|
+
expect(page.images.best).to eq("http://example.com/100x100")
|
95
|
+
end
|
96
|
+
|
92
97
|
it "should find image when some img tag has no src attribute" do
|
93
98
|
page = MetaInspector.new('http://example.com/malformed_image_in_html')
|
94
99
|
|
@@ -19,9 +19,6 @@ describe MetaInspector do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
context "when there are too many redirects" do
|
22
|
-
before(:all) { WebMock.enable! }
|
23
|
-
after(:all) { WebMock.disable! }
|
24
|
-
|
25
22
|
before do
|
26
23
|
12.times { |i| register_redirect(i, i+1) }
|
27
24
|
end
|
@@ -34,9 +31,6 @@ describe MetaInspector do
|
|
34
31
|
end
|
35
32
|
|
36
33
|
context "when there are cookies required for proper redirection" do
|
37
|
-
before(:all) { WebMock.enable! }
|
38
|
-
after(:all) { WebMock.disable! }
|
39
|
-
|
40
34
|
it "allows follows redirections while sending the cookies" do
|
41
35
|
stub_request(:get, "http://blogs.clarionledger.com/dechols/2014/03/24/digital-medicine/")
|
42
36
|
.to_return(:status => 302,
|
data/spec/request_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe MetaInspector::Request do
|
4
|
-
|
5
4
|
it "raises an error if the URL is non-HTTP" do
|
6
5
|
expect do
|
7
6
|
MetaInspector::Request.new(url('ftp://ftp.example.com'))
|
@@ -55,11 +54,11 @@ describe MetaInspector::Request do
|
|
55
54
|
|
56
55
|
describe 'exception handling' do
|
57
56
|
before(:each) do
|
58
|
-
|
57
|
+
WebMock.allow_net_connect!
|
59
58
|
end
|
60
59
|
|
61
60
|
after(:each) do
|
62
|
-
|
61
|
+
WebMock.disable_net_connect!
|
63
62
|
end
|
64
63
|
|
65
64
|
it "should handle socket errors" do
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
$: << File.join(File.dirname(__FILE__), "/../lib")
|
2
2
|
require 'meta_inspector'
|
3
|
-
require 'fakeweb'
|
4
3
|
require "webmock/rspec"
|
5
4
|
require "pry"
|
6
5
|
|
7
|
-
FakeWeb.allow_net_connect = false
|
8
|
-
WebMock.disable!
|
9
|
-
|
10
6
|
def fixture_file(filename)
|
11
7
|
return '' if filename == ''
|
12
8
|
file_path = File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
|
@@ -16,107 +12,66 @@ end
|
|
16
12
|
RSpec.configure do |config|
|
17
13
|
config.filter_run focus: true
|
18
14
|
config.run_all_when_everything_filtered = true
|
19
|
-
end
|
20
|
-
|
21
|
-
#######################
|
22
|
-
# Faked web responses #
|
23
|
-
#######################
|
24
|
-
|
25
|
-
# We're reorganizing fixtures, trying to combine them on as few as possible response files
|
26
|
-
# For each change in the fixtures, a comment should be included explaining why it's needed
|
27
|
-
# This is the base page to be used in the examples
|
28
|
-
FakeWeb.register_uri(:get, "http://example.com/", :response => fixture_file("example.response"))
|
29
|
-
|
30
|
-
# Used to test response status codes
|
31
|
-
FakeWeb.register_uri(:get, "http://example.com/404", :response => fixture_file("404.response"))
|
32
|
-
|
33
|
-
# Used to test headers
|
34
|
-
FakeWeb.register_uri(:get, "http://example.com/no-content-type", :response => fixture_file("no-content-type.response"))
|
35
|
-
|
36
|
-
# Used to test largest image in page logic
|
37
|
-
FakeWeb.register_uri(:get, "http://example.com/largest_image_in_html", :response => fixture_file("largest_image_in_html.response"))
|
38
|
-
FakeWeb.register_uri(:get, "http://example.com/largest_image_using_image_size", :response => fixture_file("largest_image_using_image_size.response"))
|
39
|
-
FakeWeb.register_uri(:get, "http://example.com/malformed_image_in_html", :response => fixture_file("malformed_image_in_html.response"))
|
40
|
-
FakeWeb.register_uri(:get, "http://example.com/10x10", :response => fixture_file("10x10.jpg.response"))
|
41
|
-
FakeWeb.register_uri(:get, "http://example.com/100x100", :response => fixture_file("100x100.jpg.response"))
|
42
|
-
FakeWeb.register_uri(:get, "http://www.24-horas.mx/mexico-firma-acuerdo-bilateral-automotriz-con-argentina/", :response => fixture_file("relative_og_image.response"))
|
43
|
-
|
44
|
-
# Used to test canonical URLs in head
|
45
|
-
FakeWeb.register_uri(:get, "http://example.com/head_links", :response => fixture_file("head_links.response"))
|
46
|
-
FakeWeb.register_uri(:get, "https://example.com/head_links", :response => fixture_file("head_links.response"))
|
47
|
-
FakeWeb.register_uri(:get, "http://example.com/broken_head_links", :response => fixture_file("broken_head_links.response"))
|
48
|
-
|
49
|
-
# Used to test best_title logic
|
50
|
-
FakeWeb.register_uri(:get, "http://example.com/title_in_head", :response => fixture_file("title_in_head.response"))
|
51
|
-
FakeWeb.register_uri(:get, "http://example.com/title_in_body", :response => fixture_file("title_in_body.response"))
|
52
|
-
FakeWeb.register_uri(:get, "http://example.com/title_in_h1", :response => fixture_file("title_in_h1.response"))
|
53
|
-
FakeWeb.register_uri(:get, "http://example.com/title_best_choice", :response => fixture_file("title_best_choice.response"))
|
54
|
-
FakeWeb.register_uri(:get, "http://example.com/title_in_head_with_whitespace", :response => fixture_file("title_in_head_with_whitespace.response"))
|
55
|
-
FakeWeb.register_uri(:get, "http://example.com/title_not_present", :response => fixture_file("title_not_present.response"))
|
56
|
-
# best_title now has specific logic for youtube
|
57
|
-
FakeWeb.register_uri(:get, "http://www.youtube.com/watch?v=short_title", :response => fixture_file("youtube_short_title.response"))
|
58
15
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
# Example used to test empty description metatags
|
122
|
-
FakeWeb.register_uri(:get, "http://example.com/empty-meta-description", :response => fixture_file("empty_metatag_description.response"))
|
16
|
+
config.before(:each) do
|
17
|
+
stub_request(:get, "http://alazan.com/websolution.asp").to_return(fixture_file("alazan_websolution.response"))
|
18
|
+
stub_request(:get, "http://charset000.com").to_return(fixture_file("charset_000.response"))
|
19
|
+
stub_request(:get, "http://charset001.com").to_return(fixture_file("charset_001.response"))
|
20
|
+
stub_request(:get, "http://charset002.com").to_return(fixture_file("charset_002.response"))
|
21
|
+
stub_request(:get, "http://example-rtl.com/").to_return(fixture_file("encoding.response"))
|
22
|
+
stub_request(:get, "http://example.com").to_return(fixture_file("example.response"))
|
23
|
+
stub_request(:get, "http://example.com/").to_return(fixture_file("example.response"))
|
24
|
+
stub_request(:get, "http://example.com/100x100").to_return(fixture_file("100x100.jpg.response"))
|
25
|
+
stub_request(:get, "http://example.com/10x10").to_return(fixture_file("10x10.jpg.response"))
|
26
|
+
stub_request(:get, "http://example.com/broken_head_links").to_return(fixture_file("broken_head_links.response"))
|
27
|
+
stub_request(:get, "http://example.com/desc_in_meta").to_return(fixture_file("desc_in_meta.response"))
|
28
|
+
stub_request(:get, "http://example.com/desc_in_og").to_return(fixture_file("desc_in_og.response"))
|
29
|
+
stub_request(:get, "http://example.com/desc_in_twitter").to_return(fixture_file("desc_in_twitter.response"))
|
30
|
+
stub_request(:get, "http://example.com/empty").to_return(fixture_file("empty_page.response"))
|
31
|
+
stub_request(:get, "http://example.com/head_links").to_return(fixture_file("head_links.response"))
|
32
|
+
stub_request(:get, "http://example.com/invalid_byte_seq").to_return(fixture_file("invalid_byte_seq.response"))
|
33
|
+
stub_request(:get, "http://example.com/invalid_href").to_return(fixture_file("invalid_href.response"))
|
34
|
+
stub_request(:get, "http://example.com/largest_image_in_html").to_return(fixture_file("largest_image_in_html.response"))
|
35
|
+
stub_request(:get, "http://example.com/largest_image_using_image_size").to_return(fixture_file("largest_image_using_image_size.response"))
|
36
|
+
stub_request(:get, "http://example.com/malformed_href").to_return(fixture_file("malformed_href.response"))
|
37
|
+
stub_request(:get, "http://example.com/malformed_image_in_html").to_return(fixture_file("malformed_image_in_html.response"))
|
38
|
+
stub_request(:get, "http://example.com/meta-tags").to_return(fixture_file("meta_tags.response"))
|
39
|
+
stub_request(:get, "http://example.com/no-content-type").to_return(fixture_file("no-content-type.response"))
|
40
|
+
stub_request(:get, "http://example.com/nonhttp").to_return(fixture_file("nonhttp.response"))
|
41
|
+
stub_request(:get, "http://example.com/title_best_choice").to_return(fixture_file("title_best_choice.response"))
|
42
|
+
stub_request(:get, "http://example.com/title_in_body").to_return(fixture_file("title_in_body.response"))
|
43
|
+
stub_request(:get, "http://example.com/title_in_h1").to_return(fixture_file("title_in_h1.response"))
|
44
|
+
stub_request(:get, "http://example.com/title_in_head").to_return(fixture_file("title_in_head.response"))
|
45
|
+
stub_request(:get, "http://example.com/title_in_head_with_whitespace").to_return(fixture_file("title_in_head_with_whitespace.response"))
|
46
|
+
stub_request(:get, "http://example.com/title_not_present").to_return(fixture_file("title_not_present.response"))
|
47
|
+
stub_request(:get, "http://example.com/~").to_return(fixture_file("example.response"))
|
48
|
+
stub_request(:get, "http://facebook.com/").to_return(fixture_file("facebook.com.response"))
|
49
|
+
stub_request(:get, "http://international.com").to_return(fixture_file("international.response"))
|
50
|
+
stub_request(:get, "http://pagerankalert-shortcut-and-icon.com").to_return(fixture_file("pagerankalert-shortcut-and-icon.com.response"))
|
51
|
+
stub_request(:get, "http://pagerankalert-shortcut.com").to_return(fixture_file("pagerankalert-shortcut.com.response"))
|
52
|
+
stub_request(:get, "http://pagerankalert-touch-icon.com").to_return(fixture_file("pagerankalert-touch-icon.com.response"))
|
53
|
+
stub_request(:get, "http://pagerankalert.com/").to_return(fixture_file("pagerankalert.com.response"))
|
54
|
+
stub_request(:get, "http://pagerankalert.com/image.png").to_return(headers: {'Content-Type' => 'image/png'})
|
55
|
+
stub_request(:get, "http://protocol-relative.com").to_return(fixture_file("protocol_relative.response"))
|
56
|
+
stub_request(:get, "http://relative.com/").to_return(fixture_file("relative_links.response"))
|
57
|
+
stub_request(:get, "http://relative.com/company").to_return(fixture_file("relative_links.response"))
|
58
|
+
stub_request(:get, "http://relative.com/company/").to_return(fixture_file("relative_links.response"))
|
59
|
+
stub_request(:get, "http://relativewithbase.com/").to_return(fixture_file("relative_links_with_base.response"))
|
60
|
+
stub_request(:get, "http://relativewithbase.com/company/page2").to_return(fixture_file("relative_links_with_base.response"))
|
61
|
+
stub_request(:get, "http://relativewithbase.com/company/page2/").to_return(fixture_file("relative_links_with_base.response"))
|
62
|
+
stub_request(:get, "http://theonion-no-description.com").to_return(fixture_file("theonion-no-description.com.response"))
|
63
|
+
stub_request(:get, "http://www.24-horas.mx/mexico-firma-acuerdo-bilateral-automotriz-con-argentina/").to_return(fixture_file("relative_og_image.response"))
|
64
|
+
stub_request(:get, "http://www.alazan.com").to_return(fixture_file("alazan.com.response"))
|
65
|
+
stub_request(:get, "http://www.guardian.co.uk/media/pda/2011/sep/15/techcrunch-arrington-startups").to_return(fixture_file("guardian.co.uk.response"))
|
66
|
+
stub_request(:get, "http://www.iteh.at").to_return(fixture_file("iteh.at.response"))
|
67
|
+
stub_request(:get, "http://www.tea-tron.com/jbravo/blog/").to_return(fixture_file("tea-tron.com.response"))
|
68
|
+
stub_request(:get, "http://www.theonion.com/articles/apple-claims-new-iphone-only-visible-to-most-loyal,2772/").to_return(fixture_file("theonion.com.response"))
|
69
|
+
stub_request(:get, "http://www.youtube.com/watch?v=iaGSSrp49uc").to_return(fixture_file("youtube.response"))
|
70
|
+
stub_request(:get, "http://www.youtube.com/watch?v=short_title").to_return(fixture_file("youtube_short_title.response"))
|
71
|
+
stub_request(:get, "https://example.com/head_links").to_return(fixture_file("head_links.response"))
|
72
|
+
stub_request(:get, "https://protocol-relative.com").to_return(fixture_file("protocol_relative.response"))
|
73
|
+
stub_request(:get, "https://twitter.com/markupvalidator").to_return(fixture_file("twitter_markupvalidator.response"))
|
74
|
+
stub_request(:get, "https://www.facebook.com/").to_return(fixture_file("https.facebook.com.response"))
|
75
|
+
stub_request(:get, "http://example.com/meta_tags_empty").to_return(fixture_file("meta_tags_empty.response"))
|
76
|
+
end
|
77
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metainspector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.4.
|
4
|
+
version: 5.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jaime Iniesta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -150,20 +150,6 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '3.0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: fakeweb
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - '='
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: 1.3.0
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - '='
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: 1.3.0
|
167
153
|
- !ruby/object:Gem::Dependency
|
168
154
|
name: webmock
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -301,6 +287,7 @@ files:
|
|
301
287
|
- spec/fixtures/malformed_image_in_html.response
|
302
288
|
- spec/fixtures/markupvalidator_faqs.response
|
303
289
|
- spec/fixtures/meta_tags.response
|
290
|
+
- spec/fixtures/meta_tags_empty.response
|
304
291
|
- spec/fixtures/no-content-type.response
|
305
292
|
- spec/fixtures/nonhttp.response
|
306
293
|
- spec/fixtures/pagerankalert-shortcut-and-icon.com.response
|