preadly-bulbasaur 0.3.0 → 0.4.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2279477cdf112255d8e1fc39cfed178ecb592aa8
4
- data.tar.gz: 74718795d096dffe94e27a5cf20798de4516adb5
3
+ metadata.gz: e2ce49896cc75739b7b348c8562bd27b782ae050
4
+ data.tar.gz: 8e085b9b873fe13483f5885bf4c5a26d7f4171b8
5
5
  SHA512:
6
- metadata.gz: 3ab87a531d9fb0fdb6c51c4e17c8afe3dee513b03dafd14ee68094c563649ba7cb4ba8ab097bcf3b1c2be18108a222af59321e785e7b36903e2d6e4cbdc8459d
7
- data.tar.gz: c646b121b54cde24f7f381e5b4c4e0fb0845f93ce1b62e323ad39bdf790e0729355dc567326cb9e0f2d24a7618a894ea67c4e2400b80d575257ebb8ea5c2e521
6
+ metadata.gz: 36409b5eda6f8928b710698fbb7787fa387f59276f08a724e448a333e8b259096efd30cff1b8632b0e77401a3194c7b7f2a42c2b3fd64a44e20c649b3dc1be1a
7
+ data.tar.gz: bedb92be982705d050f8ea472410a34af96f4df36a528d370a593cf6087246717a4f2bc3e08f2eac34473cd71d0433d7920482d42a96bd639630dcbef75940ea
data/bulbasaur.gemspec CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.add_development_dependency "bundler", "~> 1.6"
19
19
  spec.add_development_dependency "rake", "~> 10.4"
20
20
  spec.add_development_dependency "rspec", "~> 3.3"
21
+ spec.add_development_dependency "webmock"
22
+
21
23
 
22
24
  spec.add_dependency "nokogiri", "~> 1.6"
23
25
  end
@@ -1,7 +1,7 @@
1
1
  module Bulbasaur
2
2
 
3
3
  class ExtractImagesFromYoutube
4
-
4
+
5
5
  EXTRACT_URL_PATTERN = /www\.youtube(?:-nocookie)?\.com\/(?:v|embed)\/[a-zA-Z0-9-]+/i
6
6
  EXTRACT_VID_PATTERN = /(?<=v|embed)\/(?<vid>[a-zA-Z0-9-]+)/i
7
7
 
@@ -13,7 +13,7 @@ module Bulbasaur
13
13
  images = Array.new
14
14
  @html.scan(EXTRACT_URL_PATTERN).each do |video|
15
15
  vid = get_vid(video)
16
- images << { url: image_url(vid), url_fallback: image_url_fallback(vid) }
16
+ images << { url: image_url(vid) }
17
17
  end
18
18
  images
19
19
  end
@@ -25,9 +25,20 @@ module Bulbasaur
25
25
  end
26
26
 
27
27
  def image_url(vid)
28
+ image = image_url_max_resolution(vid)
29
+ response = Net::HTTP.get_response(URI(image))
30
+ case response
31
+ when Net::HTTPSuccess then
32
+ return image_url_max_resolution(vid)
33
+ else
34
+ return image_url_fallback(vid)
35
+ end
36
+ end
37
+
38
+ def image_url_max_resolution(vid)
28
39
  "http://img.youtube.com/vi/#{vid}/maxresdefault.jpg"
29
40
  end
30
-
41
+
31
42
  def image_url_fallback(vid)
32
43
  "http://img.youtube.com/vi/#{vid}/0.jpg"
33
44
  end
@@ -2,7 +2,7 @@ module Bulbasaur
2
2
 
3
3
  module Version
4
4
  MAJOR = 0
5
- MINOR = 3
5
+ MINOR = 4
6
6
  PATCH = 0
7
7
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
8
8
  end
@@ -5,6 +5,10 @@ RSpec.describe Bulbasaur::ExtractImagesFromAllResources do
5
5
  subject do
6
6
  described_class.new(html).call
7
7
  end
8
+
9
+ before do
10
+ stub_request(:get, /\.youtube\.com/).to_return(status: 200)
11
+ end
8
12
 
9
13
  describe "#call" do
10
14
 
@@ -6,6 +6,10 @@ RSpec.describe Bulbasaur::ExtractImagesFromYoutube do
6
6
  described_class.new(html).call
7
7
  end
8
8
 
9
+ before do
10
+ stub_request(:get, /\.youtube\.com/).to_return(status: 200)
11
+ end
12
+
9
13
  describe "#call" do
10
14
 
11
15
  context "When there is not youtube images" do
@@ -32,10 +36,6 @@ RSpec.describe Bulbasaur::ExtractImagesFromYoutube do
32
36
  it "Does return youtube url" do
33
37
  expect(subject.first[:url]).to eq "http://img.youtube.com/vi/123idfake321/maxresdefault.jpg"
34
38
  end
35
-
36
- it "Does return youtube url fallback" do
37
- expect(subject.first[:url_fallback]).to eq "http://img.youtube.com/vi/123idfake321/0.jpg"
38
- end
39
39
  end
40
40
 
41
41
  context "When has on youtube video with path 'v'" do
@@ -51,10 +51,6 @@ RSpec.describe Bulbasaur::ExtractImagesFromYoutube do
51
51
  it "Does return youtube url" do
52
52
  expect(subject.first[:url]).to eq "http://img.youtube.com/vi/video-1/maxresdefault.jpg"
53
53
  end
54
-
55
- it "Does return youtube url fallback" do
56
- expect(subject.first[:url_fallback]).to eq "http://img.youtube.com/vi/video-1/0.jpg"
57
- end
58
54
  end
59
55
 
60
56
  context "When has on youtube video with domais no-cookies" do
@@ -70,9 +66,20 @@ RSpec.describe Bulbasaur::ExtractImagesFromYoutube do
70
66
  it "Does return youtube url" do
71
67
  expect(subject.first[:url]).to eq "http://img.youtube.com/vi/video-6/maxresdefault.jpg"
72
68
  end
73
-
74
- it "Does return youtube url fallback" do
75
- expect(subject.first[:url_fallback]).to eq "http://img.youtube.com/vi/video-6/0.jpg"
69
+ end
70
+
71
+ context "When image max resolution not exists" do
72
+
73
+ let(:html) do
74
+ %Q(<iframe width="560" height="315" src="https://www.youtube-nocookie.com/v/video-fail-6" frameborder="0" allowfullscreen></iframe>)
75
+ end
76
+
77
+ before do
78
+ stub_request(:get, "http://img.youtube.com/vi/video-fail-6/maxresdefault.jpg").to_return(status: 404)
79
+ end
80
+
81
+ it "Does return image fallback url" do
82
+ expect(subject.first[:url]).to eq "http://img.youtube.com/vi/video-fail-6/0.jpg"
76
83
  end
77
84
  end
78
85
 
@@ -106,17 +113,6 @@ RSpec.describe Bulbasaur::ExtractImagesFromYoutube do
106
113
  "http://img.youtube.com/vi/video-4/maxresdefault.jpg",
107
114
  "http://img.youtube.com/vi/video-6/maxresdefault.jpg")
108
115
  end
109
-
110
- it "Does return youtube urls fallback" do
111
- expect(subject.map{ |video| video[:url_fallback] }).to include(
112
- "http://img.youtube.com/vi/video0/0.jpg",
113
- "http://img.youtube.com/vi/video1/0.jpg",
114
- "http://img.youtube.com/vi/video2/0.jpg",
115
- "http://img.youtube.com/vi/video3/0.jpg",
116
- "http://img.youtube.com/vi/video-4/0.jpg",
117
- "http://img.youtube.com/vi/video-4/0.jpg",
118
- "http://img.youtube.com/vi/video-6/0.jpg")
119
- end
120
116
  end
121
117
  end
122
118
  end
data/spec/spec_helper.rb CHANGED
@@ -7,8 +7,12 @@ require "bundler/setup"
7
7
  Bundler.setup
8
8
 
9
9
  require "bulbasaur"
10
- require "simplecov"
10
+ require "webmock/rspec"
11
11
 
12
12
  RSpec.configure do |config|
13
13
 
14
+ config.after(:suite) do
15
+ WebMock.disable_net_connect!(:allow => 'codeclimate.com')
16
+ end
17
+
14
18
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: preadly-bulbasaur
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Magno Costa
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: webmock
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'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: nokogiri
57
71
  requirement: !ruby/object:Gem::Requirement