ogo 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 07a11957eb9e8e7a755ef7508125319f86e14b65
4
- data.tar.gz: 31e44eeb7a939ea3afbcdd9a5a309bbdf86e8f8a
3
+ metadata.gz: 41df5206b948578ceb2d31a306c73f84f35b837e
4
+ data.tar.gz: f871b617057c6b54f11dd2aa255880d6a623db8c
5
5
  SHA512:
6
- metadata.gz: 4cbbc4c57a3f4fab3e09fafd6853d78f2674d9da677aa73977051c0610eac0f35e0339af37f7d3031d33590197f80800d6f740f68a00e86126f41b4702acd261
7
- data.tar.gz: 3e3c2516b4fdaf125c1bb7d378630f4c3faa6762f8efc22613d3fceae9ebcfa89b39831ff4c4e13f8c87315ce3dca2bee52db34eed96dc87af681573476b5a1c
6
+ metadata.gz: ddeef19fba2db90c1f70729e9d99ed8d7c2f908eafb83b2b791139262a88d66d096cf8b855e695ad6608112f6652f27fc5a21a579e135b067caf0fdb784117e6
7
+ data.tar.gz: 1b714a39fece5216852e31eadfbcf9822e50cd3233c98871015b55d0d99ceeed3587132bd6cb96129cef644a62374ff5102654730931eb938f16f12ef96b9fb3
data/.gitignore CHANGED
@@ -5,3 +5,4 @@ pkg/*
5
5
  tmp/*
6
6
  .rvmrc
7
7
  *.idea
8
+ .byebug_history
data/README.md CHANGED
@@ -3,7 +3,9 @@
3
3
  ## Information
4
4
 
5
5
  Implementation of first verion of this gem based mostly on @huyha85's opengraph_parser
6
- https://github.com/huyha85/opengraph_parser and its forks.
6
+ https://github.com/huyha85/opengraph_parser and its forks:
7
+
8
+ Charset support taken from @codefist fork: https://github.com/codefirst/opengraph_parser
7
9
 
8
10
  I prefer to make my own repo for this gem as origin repo is seemingly-abandoned and
9
11
  I need more functionality than just opengraph (ogp.me) tags parsing.
data/lib/ogo.rb CHANGED
@@ -1,4 +1,7 @@
1
1
  require 'addressable/uri'
2
+ require 'uri'
3
+ require 'nokogiri'
4
+
2
5
  require_relative 'ogo/opengraph'
3
6
  require_relative 'ogo/utils/redirect_follower'
4
7
 
data/lib/ogo/opengraph.rb CHANGED
@@ -1,18 +1,17 @@
1
- require 'nokogiri'
2
- require 'utils/redirect_follower'
3
- require "addressable/uri"
4
- require 'uri'
5
-
6
1
  module Ogo
7
2
  class Opengraph
8
3
 
9
- attr_accessor :src, :url, :type, :title, :description, :images, :metadata, :response, :original_images
4
+ attr_accessor :src, :url, :type, :title, :description,
5
+ :images, :metadata, :response, :body, :charset, :original_images,
6
+ :error
10
7
 
11
8
  def initialize(src, options = {})
12
9
  @src = src
13
10
  @body = nil
14
11
  @images = []
15
12
  @metadata = {}
13
+ @charset = 'utf-8'
14
+ @error = nil
16
15
 
17
16
  @_fallback = options[:fallback] || true
18
17
  @_options = options
@@ -22,6 +21,22 @@ module Ogo
22
21
  parse_opengraph(@_options)
23
22
  load_fallback if @_fallback
24
23
  check_images_path
24
+ self
25
+ end
26
+
27
+ def parse!
28
+ parse
29
+ error ? raise(error) : self
30
+ end
31
+
32
+ def inspect
33
+ str = "<Ogo::Opengraph:0x00#{'%x' % (self.object_id << 1)}\nurl=\"#{url}\",\nmetadata=#{metadata},\n"
34
+ str << "images=#{images},\ntype=\"#{type}\",\ntitle=\"#{title}\">"
35
+ str
36
+ end
37
+
38
+ def to_s
39
+ inspect
25
40
  end
26
41
 
27
42
  private
@@ -31,16 +46,19 @@ module Ogo
31
46
  if src.include? '</html>'
32
47
  self.body = src
33
48
  else
34
- self.body = Ogo::Utils::RedirectFollower.new(src, options).resolve.body
49
+ resolved = Ogo::Utils::RedirectFollower.new(src, options).resolve
50
+ self.body = resolved.body
51
+ self.charset = resolved.charset if resolved.charset
35
52
  end
36
- rescue
53
+ rescue => e
37
54
  self.title = self.url = src
55
+ self.error = e
38
56
  return
39
57
  end
40
58
 
41
59
  if body
42
60
  attrs_list = %w(title url type description)
43
- doc = Nokogiri.parse(body)
61
+ doc = parse_html
44
62
  doc.css('meta').each do |m|
45
63
  if m.attribute('property') && m.attribute('property').to_s.match(/^og:(.+)$/i)
46
64
  m_content = m.attribute('content').to_s.strip
@@ -59,7 +77,7 @@ module Ogo
59
77
 
60
78
  def load_fallback
61
79
  if body
62
- doc = Nokogiri.parse(body)
80
+ doc = parse_html
63
81
 
64
82
  if title.to_s.empty? && doc.xpath("//head//title").size > 0
65
83
  self.title = doc.xpath("//head//title").first.text.to_s.strip
@@ -82,7 +100,7 @@ module Ogo
82
100
 
83
101
  def check_images_path
84
102
  self.original_images = images.dup
85
- uri = Addressable::URI.parse(src)
103
+ uri = Addressable::URI.parse(url)
86
104
  imgs = images.dup
87
105
  self.images = []
88
106
  imgs.each do |img|
@@ -135,5 +153,27 @@ module Ogo
135
153
  metadata_container
136
154
  end
137
155
  end
156
+
157
+ def parse_html
158
+ unless charset
159
+ doc = Nokogiri.parse(body.scrub)
160
+ self.charset = guess_encoding(doc)
161
+ end
162
+ Nokogiri::HTML(body, nil, charset)
163
+ end
164
+
165
+ def guess_encoding(doc)
166
+ _charset = doc.xpath('//meta/@charset').first
167
+ return _charset.value.to_s if charset
168
+
169
+ _charset = doc.xpath('//meta').each do |m|
170
+ if m.attribute('http-equiv') && m.attribute('content') && m.attribute('http-equiv').value.casecmp('Content-Type')
171
+ return m.attribute('content').value.split('charset=').last.strip
172
+ end
173
+ end
174
+
175
+ 'UTF-8'
176
+ end
177
+
138
178
  end
139
179
  end
@@ -6,22 +6,23 @@ module Ogo
6
6
  REDIRECT_DEFAULT_LIMIT = 5
7
7
 
8
8
  class TooManyRedirects < StandardError; end
9
+ class EmptyURLError < ArgumentError; end
9
10
 
10
- attr_accessor :url, :body, :redirect_limit, :response, :headers
11
+ attr_accessor :url, :body, :charset, :redirect_limit, :response, :headers
11
12
 
12
13
  def initialize(url, options = {})
13
- @limit = options[:limit] || REDIRECT_DEFAULT_LIMIT
14
+ raise EmptyURLError if url.to_s.empty?
15
+ @redirect_limit = options[:limit] || REDIRECT_DEFAULT_LIMIT
14
16
  @headers = options[:headers] || {}
15
- @url = url
17
+ @url = url.start_with?('http') ? url : "http://#{url}"
16
18
  end
17
19
 
18
20
  def resolve
19
21
  raise TooManyRedirects if redirect_limit < 0
20
22
 
21
- url = "http://#{url}" unless url.starts_with?('http')
22
- uri = Addressable::URI.parse(URI.escape(url))
23
+ uri = Addressable::URI.parse(url).normalize
23
24
 
24
- http = Net::HTTP.new(uri.host, uri.port)
25
+ http = Net::HTTP.new(uri.host, uri.inferred_port)
25
26
  if uri.scheme == 'https'
26
27
  http.use_ssl = true
27
28
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
@@ -35,6 +36,14 @@ module Ogo
35
36
  resolve
36
37
  end
37
38
 
39
+ charset = nil
40
+ if content_type = response['content-type']
41
+ if content_type =~ /charset=(.+)/i
42
+ charset = $1
43
+ end
44
+ end
45
+ self.charset = charset
46
+
38
47
  self.body = response.body
39
48
  self
40
49
  end
data/lib/ogo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ogo
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
data/ogo.gemspec CHANGED
@@ -19,5 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.add_dependency 'nokogiri', '>= 1.6'
20
20
  s.add_dependency 'addressable', '>= 2.4.0'
21
21
  s.add_development_dependency 'rspec', '>= 3.0'
22
+ s.add_development_dependency 'pry'
23
+ s.add_development_dependency 'byebug'
22
24
  s.add_development_dependency 'rake'
23
25
  end
@@ -0,0 +1,133 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Ogo::Opengraph do
4
+ describe "#initialize" do
5
+ context "with invalid src" do
6
+ it "set title and url the same as src" do
7
+ og = Ogo::Opengraph.new("invalid")
8
+ og.parse
9
+ expect(og.src).to eq "invalid"
10
+ expect(og.title).to eq "invalid"
11
+ expect(og.url).to eq "invalid"
12
+ end
13
+ end
14
+
15
+ context "with no fallback" do
16
+ it "should get values from opengraph metadata" do
17
+ response = double(charset: 'UTF-8', body: File.open("#{File.dirname(__FILE__)}/../../view/opengraph.html", 'r') { |f| f.read })
18
+ Ogo::Utils::RedirectFollower.stub(:new) { double(resolve: response) }
19
+
20
+ og = Ogo::Opengraph.new("http://test.host", fallback: false)
21
+ og.parse
22
+ og.src.should == "http://test.host"
23
+ og.title.should == "OpenGraph Title"
24
+ og.type.should == "article"
25
+ og.url.should == "http://test.host"
26
+ og.description.should == "My OpenGraph sample site for Rspec"
27
+ og.images.should == ["http://test.host/images/rock1.jpg", "http://test.host/images/rock2.jpg"]
28
+ og.original_images.should == ["http://test.host/images/rock1.jpg", "/images/rock2.jpg"]
29
+ og.metadata.should == {
30
+ title: [{_value: "OpenGraph Title"}],
31
+ type: [{_value: "article"}],
32
+ url: [{_value: "http://test.host"}],
33
+ description: [{_value: "My OpenGraph sample site for Rspec"}],
34
+ image: [
35
+ {
36
+ _value: "http://test.host/images/rock1.jpg",
37
+ width: [{ _value: "300" }],
38
+ height: [{ _value: "300" }]
39
+ },
40
+ {
41
+ _value: "/images/rock2.jpg",
42
+ height: [{ _value: "1000" }]
43
+ }
44
+ ],
45
+ locale: [
46
+ {
47
+ _value: "en_GB",
48
+ alternate: [
49
+ { _value: "fr_FR" },
50
+ { _value: "es_ES" }
51
+ ]
52
+ }
53
+ ]
54
+ }
55
+ end
56
+ end
57
+
58
+ context "with fallback" do
59
+ context "when website has opengraph metadata" do
60
+ it "should get values from opengraph metadata" do
61
+ response = double(charset: 'UTF-8', body: File.open("#{File.dirname(__FILE__)}/../../view/opengraph.html", 'r') { |f| f.read })
62
+ Ogo::Utils::RedirectFollower.stub(:new) { double(resolve: response) }
63
+
64
+ og = Ogo::Opengraph.new("http://test.host")
65
+ og.parse
66
+ og.src.should == "http://test.host"
67
+ og.title.should == "OpenGraph Title"
68
+ og.type.should == "article"
69
+ og.url.should == "http://test.host"
70
+ og.description.should == "My OpenGraph sample site for Rspec"
71
+ og.images.should == ["http://test.host/images/rock1.jpg", "http://test.host/images/rock2.jpg"]
72
+ end
73
+ end
74
+
75
+ context "when website has no opengraph metadata" do
76
+ it "should lookup for other data from website" do
77
+ response = double(charset: 'UTF-8', body: File.open("#{File.dirname(__FILE__)}/../../view/opengraph_no_metadata.html", 'r') { |f| f.read })
78
+ Ogo::Utils::RedirectFollower.stub(:new) { double(resolve: response) }
79
+
80
+ og = Ogo::Opengraph.new("http://test.host/child_page")
81
+ og.parse
82
+ og.src.should == "http://test.host/child_page"
83
+ og.title.should == "OpenGraph Title Fallback"
84
+ og.type.should be_nil
85
+ og.url.should == "http://test.host/child_page"
86
+ og.description.should == "Short Description Fallback"
87
+ og.images.should == ["http://test.host/images/wall1.jpg", "http://test.host/images/wall2.jpg"]
88
+ end
89
+ end
90
+ end
91
+
92
+ context "with body" do
93
+ it "should parse body instead of downloading it" do
94
+ content = File.read("#{File.dirname(__FILE__)}/../../view/opengraph.html")
95
+ Ogo::Utils::RedirectFollower.should_not_receive(:new)
96
+
97
+ og = Ogo::Opengraph.new(content)
98
+ og.parse
99
+ og.src.should == content
100
+ og.title.should == "OpenGraph Title"
101
+ og.type.should == "article"
102
+ og.url.should == "http://test.host"
103
+ og.description.should == "My OpenGraph sample site for Rspec"
104
+ og.images.should == ["http://test.host/images/rock1.jpg", "http://test.host/images/rock2.jpg"]
105
+ end
106
+ end
107
+
108
+ context "with Shift_JIS" do
109
+ it "should get values from opengraph metadata" do
110
+ pending 'Not working'
111
+ response = double(charset: 'euc-jp', body: File.open("#{File.dirname(__FILE__)}/../../view/shift_jis.html", 'r') { |f| f.read })
112
+ Ogo::Utils::RedirectFollower.stub(:new) { double(resolve: response) }
113
+
114
+ og = Ogo::Opengraph.new("http://test.host", fallback: false)
115
+ og.parse
116
+ og.src.should == "http://test.host"
117
+ og.title.should == "日本語"
118
+ end
119
+ end
120
+ context "with EUC-JP" do
121
+ it "should get values from opengraph metadata" do
122
+ pending 'Not working'
123
+ response = double(charset: 'euc-jp', body: File.open("#{File.dirname(__FILE__)}/../../view/euc-jp.html", 'r') { |f| f.read })
124
+ Ogo::Utils::RedirectFollower.stub(:new) { double(resolve: response) }
125
+
126
+ og = Ogo::Opengraph.new("http://test.host", fallback: false)
127
+ og.parse
128
+ og.src.should == "http://test.host"
129
+ og.title.should == "日本語"
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,83 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
2
+
3
+ describe Ogo::Utils::RedirectFollower do
4
+ describe "#resolve" do
5
+ let(:url) { "http://test.host" }
6
+ let(:https_url) { "https://test.host" }
7
+ let(:mock_res) { double(body: "Body is here.") }
8
+ let(:mock_redirect) {
9
+ m = double(body: %Q{<body><a href="http://new.test.host"></a></body>}, kind_of?: Net::HTTPRedirection)
10
+ m.stub(:[]).and_return(nil)
11
+ m
12
+ }
13
+
14
+ context "with no redirection" do
15
+ it "should return the response" do
16
+ uri = URI.parse(URI.escape(url))
17
+
18
+ http = Net::HTTP.new(uri.host, uri.port)
19
+ Net::HTTP.should_receive(:new).with(uri.host, uri.port).and_return(http)
20
+ http.should_receive(:request_get).and_return(mock_res)
21
+
22
+ res = Ogo::Utils::RedirectFollower.new(url).resolve
23
+ res.body.should == "Body is here."
24
+ res.redirect_limit.should == Ogo::Utils::RedirectFollower::REDIRECT_DEFAULT_LIMIT
25
+ end
26
+
27
+ describe "and uri scheme is HTTPS" do
28
+ it "should use https method to retrieve the uri" do
29
+ uri = URI.parse(URI.escape(https_url))
30
+
31
+ https = Net::HTTP.new(uri.host, uri.port)
32
+ Net::HTTP.should_receive(:new).with(uri.host, uri.port).and_return(https)
33
+ https.should_receive(:request_get).and_return(mock_res)
34
+
35
+ res = Ogo::Utils::RedirectFollower.new(https_url).resolve
36
+ res.body.should == "Body is here."
37
+ res.redirect_limit.should == Ogo::Utils::RedirectFollower::REDIRECT_DEFAULT_LIMIT
38
+ end
39
+ end
40
+
41
+ describe "and has headers option" do
42
+ it "should add headers when retrieve the uri" do
43
+ uri = URI.parse(URI.escape(url))
44
+
45
+ http = Net::HTTP.new(uri.host, uri.port)
46
+ Net::HTTP.should_receive(:new).with(uri.host, uri.port).and_return(http)
47
+ http.should_receive(:request_get).and_return(mock_res)
48
+ res = Ogo::Utils::RedirectFollower.new(url, {:headers => {'User-Agent' => 'My Custom User-Agent'}}).resolve
49
+ res.body.should == "Body is here."
50
+ res.redirect_limit.should == Ogo::Utils::RedirectFollower::REDIRECT_DEFAULT_LIMIT
51
+ end
52
+ end
53
+ end
54
+
55
+ context "with redirection" do
56
+ it "should follow the link in redirection" do
57
+ uri = URI.parse(URI.escape(url))
58
+
59
+ http = Net::HTTP.new(uri.host, uri.port)
60
+ Net::HTTP.should_receive(:new).twice.and_return(http)
61
+ http.should_receive(:request_get).twice.and_return(mock_redirect, mock_res)
62
+
63
+ res = Ogo::Utils::RedirectFollower.new(url).resolve
64
+ res.body.should == "Body is here."
65
+ res.redirect_limit.should == Ogo::Utils::RedirectFollower::REDIRECT_DEFAULT_LIMIT - 1
66
+ end
67
+ end
68
+
69
+ context "with unlimited redirection" do
70
+ it "should raise TooManyRedirects error" do
71
+ uri = URI.parse(URI.escape(url))
72
+
73
+ http = Net::HTTP.new(uri.host, uri.port)
74
+ Net::HTTP.stub(:new).and_return(http)
75
+ http.stub(:request_get).and_return(mock_redirect)
76
+
77
+ lambda {
78
+ Ogo::Utils::RedirectFollower.new(url).resolve
79
+ }.should raise_error(Ogo::Utils::RedirectFollower::TooManyRedirects)
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,11 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'ogo'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+ end
@@ -0,0 +1,23 @@
1
+ <html>
2
+ <head>
3
+ <meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
4
+ <title>OpenGraph Title Fallback</title>
5
+ <meta property="og:title" content="ÆüËܸì" />
6
+ <meta property="og:type" content="article" />
7
+ <meta property="og:url" content="http://test.host" />
8
+ <meta property="og:description" content="My OpenGraph sample site for Rspec" />
9
+ <meta property="og:image" content="http://test.host/images/rock1.jpg" />
10
+ <meta property="og:image:width" content="300" />
11
+ <meta property="og:image:height" content="300" />
12
+ <meta property="og:image" content="/images/rock2.jpg" />
13
+ <meta property="og:image:height" content="1000" />
14
+ <meta property="og:locale" content="en_GB" />
15
+ <meta property="og:locale:alternate" content="fr_FR" />
16
+ <meta property="og:locale:alternate" content="es_ES" />
17
+ <meta name="description" content="Short Description Fallback" />
18
+ </head>
19
+ <body>
20
+ <img src="http://test.host/images/wall1.jpg" />
21
+ <img src="http://test.host/images/wall2.jpg" />
22
+ </body>
23
+ </html>
@@ -0,0 +1,22 @@
1
+ <html>
2
+ <head>
3
+ <title>OpenGraph Title Fallback</title>
4
+ <meta property="og:title" content="OpenGraph Title" />
5
+ <meta property="og:type" content="article" />
6
+ <meta property="og:url" content="http://test.host" />
7
+ <meta property="og:description" content="My OpenGraph sample site for Rspec" />
8
+ <meta property="og:image" content="http://test.host/images/rock1.jpg" />
9
+ <meta property="og:image:width" content="300" />
10
+ <meta property="og:image:height" content="300" />
11
+ <meta property="og:image" content="/images/rock2.jpg" />
12
+ <meta property="og:image:height" content="1000" />
13
+ <meta property="og:locale" content="en_GB" />
14
+ <meta property="og:locale:alternate" content="fr_FR" />
15
+ <meta property="og:locale:alternate" content="es_ES" />
16
+ <meta name="description" content="Short Description Fallback" />
17
+ </head>
18
+ <body>
19
+ <img src="http://test.host/images/wall1.jpg" />
20
+ <img src="http://test.host/images/wall2.jpg" />
21
+ </body>
22
+ </html>
@@ -0,0 +1,12 @@
1
+ <html>
2
+ <head>
3
+ <title>OpenGraph Title Fallback</title>
4
+ <meta property="og:type" content="" />
5
+ <meta property="og:url" content="" />
6
+ </head>
7
+ <body>
8
+ <img src="/images/wall1.jpg" />
9
+ <img src="../images/wall2.jpg" />
10
+ <p>No description meta here.</p>
11
+ </body>
12
+ </html>
@@ -0,0 +1,12 @@
1
+ <html>
2
+ <head>
3
+ <title>OpenGraph Title Fallback</title>
4
+ <meta name="description" content="Short Description Fallback" />
5
+ <meta property="og:type" content="" />
6
+ <meta property="og:url" content="" />
7
+ </head>
8
+ <body>
9
+ <img src="/images/wall1.jpg" />
10
+ <img src="../images/wall2.jpg" />
11
+ </body>
12
+ </html>
@@ -0,0 +1,23 @@
1
+ <html>
2
+ <head>
3
+ <meta charset="Shift_JIS" />
4
+ <title>OpenGraph Title Fallback</title>
5
+ <meta property="og:title" content="“ú–{Œê" />
6
+ <meta property="og:type" content="article" />
7
+ <meta property="og:url" content="http://test.host" />
8
+ <meta property="og:description" content="My OpenGraph sample site for Rspec" />
9
+ <meta property="og:image" content="http://test.host/images/rock1.jpg" />
10
+ <meta property="og:image:width" content="300" />
11
+ <meta property="og:image:height" content="300" />
12
+ <meta property="og:image" content="/images/rock2.jpg" />
13
+ <meta property="og:image:height" content="1000" />
14
+ <meta property="og:locale" content="en_GB" />
15
+ <meta property="og:locale:alternate" content="fr_FR" />
16
+ <meta property="og:locale:alternate" content="es_ES" />
17
+ <meta name="description" content="Short Description Fallback" />
18
+ </head>
19
+ <body>
20
+ <img src="http://test.host/images/wall1.jpg" />
21
+ <img src="http://test.host/images/wall2.jpg" />
22
+ </body>
23
+ </html>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ogo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - gazay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-23 00:00:00.000000000 Z
11
+ date: 2016-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rake
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -83,6 +111,14 @@ files:
83
111
  - lib/ogo/utils/redirect_follower.rb
84
112
  - lib/ogo/version.rb
85
113
  - ogo.gemspec
114
+ - spec/lib/ogo/opengraph_spec.rb
115
+ - spec/lib/ogo/utils/redirect_follower_spec.rb
116
+ - spec/spec_helper.rb
117
+ - spec/view/euc-jp.html
118
+ - spec/view/opengraph.html
119
+ - spec/view/opengraph_no_meta_nor_description.html
120
+ - spec/view/opengraph_no_metadata.html
121
+ - spec/view/shift_jis.html
86
122
  homepage: https://github.com/gazay/ogo
87
123
  licenses:
88
124
  - MIT