metainspector 5.6.0 → 5.10.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +3 -4
- data/CHANGELOG.md +45 -16
- data/README.md +12 -3
- data/lib/meta_inspector/document.rb +10 -3
- data/lib/meta_inspector/errors.rb +2 -0
- data/lib/meta_inspector/parser.rb +3 -2
- data/lib/meta_inspector/parsers/head_links.rb +21 -8
- data/lib/meta_inspector/parsers/images.rb +6 -4
- data/lib/meta_inspector/parsers/links.rb +2 -1
- data/lib/meta_inspector/parsers/texts.rb +28 -0
- data/lib/meta_inspector/request.rb +1 -1
- data/lib/meta_inspector/url.rb +7 -5
- data/lib/meta_inspector/version.rb +1 -1
- data/meta_inspector.gemspec +18 -18
- data/spec/document_spec.rb +9 -2
- data/spec/fixtures/feeds.response +23 -0
- data/spec/fixtures/guardian.co.uk.response +1 -1
- data/spec/fixtures/headings.response +23 -0
- data/spec/fixtures/relative_links_with_empty_base.response +22 -0
- data/spec/meta_inspector/head_links_spec.rb +4 -1
- data/spec/meta_inspector/images_spec.rb +6 -0
- data/spec/meta_inspector/links_spec.rb +35 -11
- data/spec/meta_inspector/texts_spec.rb +42 -0
- data/spec/spec_helper.rb +3 -2
- metadata +46 -47
- data/spec/fixtures/iteh.at.response +0 -971
- data/spec/fixtures/tea-tron.com.response +0 -957
data/spec/document_spec.rb
CHANGED
@@ -44,6 +44,13 @@ describe MetaInspector::Document do
|
|
44
44
|
"images" => ["http://pagerankalert.com/images/pagerank_alert.png?1305794559"],
|
45
45
|
"charset" => "utf-8",
|
46
46
|
"feed" => "http://feeds.feedburner.com/PageRankAlert",
|
47
|
+
"feeds" => [{href: "http://feeds.feedburner.com/PageRankAlert", title: "PageRankAlert.com blog", type: "application/rss+xml"}],
|
48
|
+
"h1" => [],
|
49
|
+
"h2" => ["Track your PageRank changes"],
|
50
|
+
"h3" => ["WHAT'S YOUR PAGERANK?"],
|
51
|
+
"h4" => ["Build your own lists", "Get e-mail alerts", "Track your history"],
|
52
|
+
"h5" => [],
|
53
|
+
"h6" => [],
|
47
54
|
"content_type" => "text/html",
|
48
55
|
"meta_tags" => {
|
49
56
|
"name" => {
|
@@ -82,14 +89,14 @@ describe MetaInspector::Document do
|
|
82
89
|
expect do
|
83
90
|
image_url = MetaInspector::Document.new('http://pagerankalert.com/image.png')
|
84
91
|
image_url.title
|
85
|
-
end.to raise_error(MetaInspector::
|
92
|
+
end.to raise_error(MetaInspector::NonHtmlError)
|
86
93
|
end
|
87
94
|
|
88
95
|
it "should not allow non-html content type when explicitly disallowed" do
|
89
96
|
expect do
|
90
97
|
image_url = MetaInspector::Document.new('http://pagerankalert.com/image.png', allow_non_html_content: false)
|
91
98
|
image_url.title
|
92
|
-
end.to raise_error(MetaInspector::
|
99
|
+
end.to raise_error(MetaInspector::NonHtmlError)
|
93
100
|
end
|
94
101
|
|
95
102
|
it "should allow non-html content type when explicitly allowed" do
|
@@ -0,0 +1,23 @@
|
|
1
|
+
HTTP/1.1 200
|
2
|
+
date: Wed, 08 Jan 2020 23:21:58 GMT
|
3
|
+
content-type: text/html; charset=UTF-8
|
4
|
+
server: nginx/0.7.67
|
5
|
+
|
6
|
+
<!DOCTYPE html>
|
7
|
+
<html>
|
8
|
+
<head>
|
9
|
+
<title>a page with feeds</title>
|
10
|
+
<link rel="alternate" title="Articles - JSON Feed" type="application/json" href="https://example.org/feed.json" />
|
11
|
+
<link rel="alternate" title="Comments - JSON Feed" type="application/json" href="https://example.org/feed/comments.json" />
|
12
|
+
<link rel="alternate" title="Articles - RSS Feed" type="application/rss+xml" href="https://example.org/feed.rss" />
|
13
|
+
<link rel="alternate" title="Comments - RSS Feed" type="application/rss+xml" href="https://example.org/feed/comments.rss" />
|
14
|
+
<link rel="alternate" title="Articles - Atom Feed" type="application/atom+xml" href="https://example.org/feed.xml" />
|
15
|
+
<link rel="alternate" title="Comments - Atom Feed" type="application/atom+xml" href="https://example.org/feed/comments.xml" />
|
16
|
+
|
17
|
+
<link rel="alternate" title="Invalid Feed" />
|
18
|
+
<link rel="alternate" title="Feed with empty href" type="application/atom+xml" href="" />
|
19
|
+
</head>
|
20
|
+
<body>
|
21
|
+
|
22
|
+
</body>
|
23
|
+
</html>
|
@@ -57,7 +57,7 @@ Connection: keep-alive
|
|
57
57
|
<meta property="og:title" content="More TechCrunch drama as Arrington-backed startup wins blog's contest"/>
|
58
58
|
<meta property="og:type" content="article"/>
|
59
59
|
<meta property="og:url" content="http://www.guardian.co.uk/media/pda/2011/sep/15/techcrunch-arrington-startups"/>
|
60
|
-
<meta property="og:image" content="https://
|
60
|
+
<meta property="og:image" content="https://i.guim.co.uk/img/media/020bf03ae1d259626803b6c83ac57fd57382f285/0_102_5760_3456/master/5760.jpg?width=1200&height=630&quality=85&auto=format&fit=crop&overlay-align=bottom%2Cleft&overlay-width=100p&overlay-base64=L2ltZy9zdGF0aWMvb3ZlcmxheXMvdGctZGVmYXVsdC5wbmc&s=46e054247285bdf48a7621d371fc5070"/>
|
61
61
|
<meta property="og:site_name" content="the Guardian"/>
|
62
62
|
<meta property="fb:app_id" content="180444840287"/>
|
63
63
|
<meta property="og:description" content="Despite claiming transparency, TechCrunch readers are not convinced that a 'Habbo Hotel for Facebook' was a deserving winner of a coveted award. By Jemima Kiss"/>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx/0.7.67
|
3
|
+
Date: Fri, 18 Nov 2011 21:46:46 GMT
|
4
|
+
Content-Type: text/html
|
5
|
+
Connection: keep-alive
|
6
|
+
Last-Modified: Mon, 14 Nov 2011 16:53:18 GMT
|
7
|
+
Content-Length: 4987
|
8
|
+
X-Varnish: 2000423390
|
9
|
+
Age: 0
|
10
|
+
Via: 1.1 varnish
|
11
|
+
|
12
|
+
<html>
|
13
|
+
<head>
|
14
|
+
</head>
|
15
|
+
<body>
|
16
|
+
<h1>H1</h1>
|
17
|
+
<h2>H2</h2>
|
18
|
+
<h3>H3</h3>
|
19
|
+
<h4>H4</h4>
|
20
|
+
<h5>H5</h5>
|
21
|
+
<h6>H6</h6>
|
22
|
+
</body>
|
23
|
+
</html>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx/1.0.5
|
3
|
+
Date: Thu, 29 Dec 2011 23:10:13 GMT
|
4
|
+
Content-Type: text/html
|
5
|
+
Content-Length: 15013
|
6
|
+
Last-Modified: Fri, 02 Dec 2011 21:00:49 GMT
|
7
|
+
Connection: keep-alive
|
8
|
+
Accept-Ranges: bytes
|
9
|
+
|
10
|
+
<!DOCTYPE html>
|
11
|
+
<html>
|
12
|
+
<head>
|
13
|
+
<base href=""/>
|
14
|
+
<meta charset="utf-8" />
|
15
|
+
<title>Relative links</title>
|
16
|
+
</head>
|
17
|
+
<body>
|
18
|
+
<p>Relative links</p>
|
19
|
+
<a href="about">About</a>
|
20
|
+
<a href="../sitemap">Sitemap</a>
|
21
|
+
</body>
|
22
|
+
</html>
|
@@ -39,7 +39,10 @@ describe MetaInspector do
|
|
39
39
|
context "on page with some broken feed links" do
|
40
40
|
let(:page){ MetaInspector.new('http://example.com/broken_head_links') }
|
41
41
|
it "tries to find correct one" do
|
42
|
-
|
42
|
+
expected = [
|
43
|
+
{ title: "TechCrunch RSS feed", href: "http://www.guardian.co.uk/media/techcrunch/rss", type: "application/rss+xml" }
|
44
|
+
]
|
45
|
+
expect(page.feeds).to eq(expected)
|
43
46
|
end
|
44
47
|
end
|
45
48
|
end
|
@@ -126,6 +126,12 @@ describe MetaInspector do
|
|
126
126
|
|
127
127
|
expect(page.images.owner_suggested).to be nil
|
128
128
|
end
|
129
|
+
|
130
|
+
it "should not normalize image" do
|
131
|
+
page = MetaInspector.new("http://www.guardian.co.uk/media/pda/2011/sep/15/techcrunch-arrington-startups")
|
132
|
+
|
133
|
+
expect(page.images.owner_suggested).to eq("https://i.guim.co.uk/img/media/020bf03ae1d259626803b6c83ac57fd57382f285/0_102_5760_3456/master/5760.jpg?width=1200&height=630&quality=85&auto=format&fit=crop&overlay-align=bottom%2Cleft&overlay-width=100p&overlay-base64=L2ltZy9zdGF0aWMvb3ZlcmxheXMvdGctZGVmYXVsdC5wbmc&s=46e054247285bdf48a7621d371fc5070")
|
134
|
+
end
|
129
135
|
end
|
130
136
|
|
131
137
|
describe "images.with_size" do
|
@@ -145,6 +145,13 @@ describe MetaInspector do
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
+
describe 'Relative links with empty or blank base' do
|
149
|
+
it 'should get the relative links from a document' do
|
150
|
+
m = MetaInspector.new('http://relativewithemptybase.com/company')
|
151
|
+
expect(m.links.internal).to eq(['http://relativewithemptybase.com/about', 'http://relativewithemptybase.com/sitemap'])
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
148
155
|
describe 'Relative links with base' do
|
149
156
|
it 'should get the relative links from a document' do
|
150
157
|
m = MetaInspector.new('http://relativewithbase.com/company/page2')
|
@@ -190,20 +197,37 @@ describe MetaInspector do
|
|
190
197
|
end
|
191
198
|
end
|
192
199
|
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
200
|
+
context "Feeds" do
|
201
|
+
let(:meta) { MetaInspector.new('http://feeds.example.com') }
|
202
|
+
|
203
|
+
describe "#feeds" do
|
204
|
+
it "should return all the document's feeds" do
|
205
|
+
expected = [
|
206
|
+
{ title: "Articles - JSON Feed", href: "https://example.org/feed.json", type: "application/json" },
|
207
|
+
{ title: "Comments - JSON Feed", href: "https://example.org/feed/comments.json", type: "application/json" },
|
208
|
+
{ title: "Articles - RSS Feed", href: "https://example.org/feed.rss", type: "application/rss+xml" },
|
209
|
+
{ title: "Comments - RSS Feed", href: "https://example.org/feed/comments.rss", type: "application/rss+xml" },
|
210
|
+
{ title: "Articles - Atom Feed", href: "https://example.org/feed.xml", type: "application/atom+xml" },
|
211
|
+
{ title: "Comments - Atom Feed", href: "https://example.org/feed/comments.xml", type: "application/atom+xml" }
|
212
|
+
]
|
213
|
+
expect(meta.feeds).to eq(expected)
|
214
|
+
end
|
198
215
|
|
199
|
-
|
200
|
-
|
201
|
-
|
216
|
+
it "should return nothing if no feeds found" do
|
217
|
+
@m = MetaInspector.new('http://www.alazan.com')
|
218
|
+
expect(@m.feeds).to eq([])
|
219
|
+
end
|
202
220
|
end
|
203
221
|
|
204
|
-
|
205
|
-
|
206
|
-
|
222
|
+
describe "#feed" do
|
223
|
+
it "should return the first feed's href" do
|
224
|
+
expect(meta.feed).to eq("https://example.org/feed.rss")
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should give a deprecation warning" do
|
228
|
+
warning = "DEPRECATION: Use MetaInspector#feeds instead of #feed. The former gives you all feeds and their metadata, the latter will be removed.\n"
|
229
|
+
expect { meta.feed }.to output(warning).to_stderr
|
230
|
+
end
|
207
231
|
end
|
208
232
|
end
|
209
233
|
end
|
@@ -6,6 +6,48 @@ describe MetaInspector do
|
|
6
6
|
expect(page.title).to eq('An example page')
|
7
7
|
end
|
8
8
|
|
9
|
+
describe "#h1" do
|
10
|
+
it "should find h1 content" do
|
11
|
+
page = MetaInspector.new('http://example.com/headings')
|
12
|
+
expect(page.h1.first).to eq('H1')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#h2" do
|
17
|
+
it "should find h2 content" do
|
18
|
+
page = MetaInspector.new('http://example.com/headings')
|
19
|
+
expect(page.h2.first).to eq('H2')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#h3" do
|
24
|
+
it "should find h3 content" do
|
25
|
+
page = MetaInspector.new('http://example.com/headings')
|
26
|
+
expect(page.h3.first).to eq('H3')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#h4" do
|
31
|
+
it "should find h4 content" do
|
32
|
+
page = MetaInspector.new('http://example.com/headings')
|
33
|
+
expect(page.h4.first).to eq('H4')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#h5" do
|
38
|
+
it "should find h5 content" do
|
39
|
+
page = MetaInspector.new('http://example.com/headings')
|
40
|
+
expect(page.h5.first).to eq('H5')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "#h6" do
|
45
|
+
it "should find h6 content" do
|
46
|
+
page = MetaInspector.new('http://example.com/headings')
|
47
|
+
expect(page.h6.first).to eq('H6')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
9
51
|
describe '#best_title' do
|
10
52
|
it "should find 'head title' when that's the only thing" do
|
11
53
|
page = MetaInspector.new('http://example.com/title_in_head')
|
data/spec/spec_helper.rb
CHANGED
@@ -29,6 +29,7 @@ RSpec.configure do |config|
|
|
29
29
|
stub_request(:get, "http://example.com/desc_in_twitter").to_return(fixture_file("desc_in_twitter.response"))
|
30
30
|
stub_request(:get, "http://example.com/empty").to_return(fixture_file("empty_page.response"))
|
31
31
|
stub_request(:get, "http://example.com/head_links").to_return(fixture_file("head_links.response"))
|
32
|
+
stub_request(:get, "http://example.com/headings").to_return(fixture_file("headings.response"))
|
32
33
|
stub_request(:get, "http://example.com/invalid_byte_seq").to_return(fixture_file("invalid_byte_seq.response"))
|
33
34
|
stub_request(:get, "http://example.com/invalid_utf8_byte_seq").to_return(fixture_file("invalid_utf8_byte_seq.response"))
|
34
35
|
stub_request(:get, "http://example.com/invalid_href").to_return(fixture_file("invalid_href.response"))
|
@@ -64,12 +65,11 @@ RSpec.configure do |config|
|
|
64
65
|
stub_request(:get, "http://relativewithbase.com/").to_return(fixture_file("relative_links_with_base.response"))
|
65
66
|
stub_request(:get, "http://relativewithbase.com/company/page2").to_return(fixture_file("relative_links_with_base.response"))
|
66
67
|
stub_request(:get, "http://relativewithbase.com/company/page2/").to_return(fixture_file("relative_links_with_base.response"))
|
68
|
+
stub_request(:get, "http://relativewithemptybase.com/company").to_return(fixture_file("relative_links_with_empty_base.response"))
|
67
69
|
stub_request(:get, "http://theonion-no-description.com").to_return(fixture_file("theonion-no-description.com.response"))
|
68
70
|
stub_request(:get, "http://www.24-horas.mx/mexico-firma-acuerdo-bilateral-automotriz-con-argentina/").to_return(fixture_file("relative_og_image.response"))
|
69
71
|
stub_request(:get, "http://www.alazan.com").to_return(fixture_file("alazan.com.response"))
|
70
72
|
stub_request(:get, "http://www.guardian.co.uk/media/pda/2011/sep/15/techcrunch-arrington-startups").to_return(fixture_file("guardian.co.uk.response"))
|
71
|
-
stub_request(:get, "http://www.iteh.at").to_return(fixture_file("iteh.at.response"))
|
72
|
-
stub_request(:get, "http://www.tea-tron.com/jbravo/blog/").to_return(fixture_file("tea-tron.com.response"))
|
73
73
|
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"))
|
74
74
|
stub_request(:get, "http://www.youtube.com/watch?v=iaGSSrp49uc").to_return(fixture_file("youtube.response"))
|
75
75
|
stub_request(:get, "http://www.youtube.com/watch?v=short_title").to_return(fixture_file("youtube_short_title.response"))
|
@@ -78,5 +78,6 @@ RSpec.configure do |config|
|
|
78
78
|
stub_request(:get, "https://twitter.com/markupvalidator").to_return(fixture_file("twitter_markupvalidator.response"))
|
79
79
|
stub_request(:get, "https://www.facebook.com/").to_return(fixture_file("https.facebook.com.response"))
|
80
80
|
stub_request(:get, "http://example.com/meta_tags_empty").to_return(fixture_file("meta_tags_empty.response"))
|
81
|
+
stub_request(:get, "http://feeds.example.com").to_return(fixture_file("feeds.response"))
|
81
82
|
end
|
82
83
|
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
|
+
version: 5.10.1
|
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: 2020-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -16,214 +16,213 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.10.9
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.10.9
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: faraday_middleware
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 1.0.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 1.0.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: faraday-cookie_jar
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.0.6
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.0.6
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: faraday-http-cache
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 2.2.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 2.2.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: faraday-encoding
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 0.0.5
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 0.0.5
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: addressable
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 2.7.0
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 2.7.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: fastimage
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 2.1.7
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 2.1.7
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: nesty
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 1.0.2
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: 1.0.2
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: rspec
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
145
|
+
version: 3.9.0
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
152
|
+
version: 3.9.0
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: webmock
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - "
|
157
|
+
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
159
|
+
version: 3.8.3
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - "
|
164
|
+
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
166
|
+
version: 3.8.3
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: awesome_print
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- - "
|
171
|
+
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
173
|
+
version: 1.8.0
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- - "
|
178
|
+
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
180
|
+
version: 1.8.0
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: rake
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
187
|
+
version: 13.0.1
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
194
|
+
version: 13.0.1
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: pry
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
|
-
- - "
|
199
|
+
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
201
|
+
version: 0.13.1
|
202
202
|
type: :development
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
|
-
- - "
|
206
|
+
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
208
|
+
version: 0.13.1
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
210
|
name: rubocop
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
|
-
- - "
|
213
|
+
- - "~>"
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
215
|
+
version: 0.82.0
|
216
216
|
type: :development
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
|
-
- - "
|
220
|
+
- - "~>"
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
222
|
+
version: 0.82.0
|
223
223
|
description: MetaInspector lets you scrape a web page and get its links, images, texts,
|
224
224
|
meta tags...
|
225
|
-
email:
|
226
|
-
- jaimeiniesta@gmail.com
|
225
|
+
email: jaimeiniesta@gmail.com
|
227
226
|
executables: []
|
228
227
|
extensions: []
|
229
228
|
extra_rdoc_files: []
|
@@ -278,14 +277,15 @@ files:
|
|
278
277
|
- spec/fixtures/encoding.response
|
279
278
|
- spec/fixtures/example.response
|
280
279
|
- spec/fixtures/facebook.com.response
|
280
|
+
- spec/fixtures/feeds.response
|
281
281
|
- spec/fixtures/guardian.co.uk.response
|
282
282
|
- spec/fixtures/head_links.response
|
283
|
+
- spec/fixtures/headings.response
|
283
284
|
- spec/fixtures/https.facebook.com.response
|
284
285
|
- spec/fixtures/international.response
|
285
286
|
- spec/fixtures/invalid_byte_seq.response
|
286
287
|
- spec/fixtures/invalid_href.response
|
287
288
|
- spec/fixtures/invalid_utf8_byte_seq.response
|
288
|
-
- spec/fixtures/iteh.at.response
|
289
289
|
- spec/fixtures/largest_image_in_html.response
|
290
290
|
- spec/fixtures/largest_image_using_image_size.response
|
291
291
|
- spec/fixtures/malformed_href.response
|
@@ -302,8 +302,8 @@ files:
|
|
302
302
|
- spec/fixtures/protocol_relative.response
|
303
303
|
- spec/fixtures/relative_links.response
|
304
304
|
- spec/fixtures/relative_links_with_base.response
|
305
|
+
- spec/fixtures/relative_links_with_empty_base.response
|
305
306
|
- spec/fixtures/relative_og_image.response
|
306
|
-
- spec/fixtures/tea-tron.com.response
|
307
307
|
- spec/fixtures/theonion-no-description.com.response
|
308
308
|
- spec/fixtures/theonion.com.response
|
309
309
|
- spec/fixtures/title_best_choice.response
|
@@ -329,7 +329,7 @@ files:
|
|
329
329
|
- spec/request_spec.rb
|
330
330
|
- spec/spec_helper.rb
|
331
331
|
- spec/url_spec.rb
|
332
|
-
homepage: https://github.com/
|
332
|
+
homepage: https://github.com/metainspector/metainspector
|
333
333
|
licenses:
|
334
334
|
- MIT
|
335
335
|
metadata: {}
|
@@ -348,8 +348,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
348
348
|
- !ruby/object:Gem::Version
|
349
349
|
version: '0'
|
350
350
|
requirements: []
|
351
|
-
|
352
|
-
rubygems_version: 2.6.8
|
351
|
+
rubygems_version: 3.1.2
|
353
352
|
signing_key:
|
354
353
|
specification_version: 4
|
355
354
|
summary: MetaInspector is a ruby gem for web scraping purposes, that returns metadata
|