onebox 1.6.2 → 1.6.3

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: 94fc556b352ee73d791b1794fbfbacad4ceb28ba
4
- data.tar.gz: ee33834b15da1ec2701a578019b8c5586e4d0f4c
3
+ metadata.gz: 6c058240b30efa1a0c9228acb70ab03469bbcda8
4
+ data.tar.gz: 2c3ac99c67db56e5da345cb5dd5e836ba432db9b
5
5
  SHA512:
6
- metadata.gz: fdcf8a62d60808afc285b24f790730c7a71f0b2638589149c9d50aa610c90b249ac74e48f527da27bad924f8eedfbc157c0c417749831f35997d73133f0fd065
7
- data.tar.gz: c41699247ec93be5472e48d2ca39c274499446219bed35257d3e8b97a27bc84d6f0c9b64721be19c3481013a10ec8063dab6ea579da165e04f6e97900395c37a
6
+ metadata.gz: fcf90694c1049cf40c59cb4aac01b9aec75629ccd20fc92d30bab5a6035c831230f9fa43c2676fa6bd9adfc07d2d1901066d8ed5b1f825224fd06bea96b1c6e9
7
+ data.tar.gz: 22cf1597307e68d2bd242b712f23da3f2f851279c821074da8c5a2be4611559bb84a42467fecf08fba2897a6cbcb94e7321f1b6c028cd1256f1823d3ba4a27d5
@@ -13,7 +13,7 @@ module Onebox
13
13
  # we want the image to have the same dimensions as the embedded html
14
14
 
15
15
  <<-HTML
16
- <img src="#{oembed[:thumbnail_url]}" style="max-width: #{oembed[:width]}px; max-height: #{oembed[:height]}px;">
16
+ <img src="#{oembed[:thumbnail_url]}" style="max-width: #{oembed[:width]}px; max-height: #{oembed[:height]}px;" #{Helpers.title_attr(oembed)}>
17
17
  HTML
18
18
  end
19
19
 
@@ -12,7 +12,7 @@ module Onebox
12
12
 
13
13
  <<-HTML
14
14
  <a href="#{oembed[:url]}" target="_blank">
15
- <img src="#{oembed[:image]}" width="#{oembed[:width]}" height="#{oembed[:height]}">
15
+ <img src="#{oembed[:image]}" width="#{oembed[:width]}" height="#{oembed[:height]}" #{Helpers.title_attr(oembed)}>
16
16
  </a>
17
17
  HTML
18
18
  end
@@ -9,16 +9,16 @@ module Onebox
9
9
 
10
10
  def to_html
11
11
  imgur_data = get_imgur_data
12
- return "<video width='#{imgur_data[:"video:width"]}' height='#{imgur_data[:"video:height"]}' controls autoplay loop><source src='#{imgur_data[:"video:secure_url"]}' type='video/mp4'><source src='#{imgur_data[:"video:secure_url"].gsub('mp4', 'webm')}' type='video/webm'></video>" if imgur_data[:"video:secure_url"]
13
- return "<div class='onebox imgur-album'><a href='#{url}' target='_blank'><span class='outer-box' style='width:#{imgur_data[:"image:width"]}px'><span class='inner-box'><span class='album-title'>[Album] #{imgur_data[:title]}</span></span></span><img src='#{get_secure_link(imgur_data[:image])}' alt='Imgur' height='#{imgur_data[:"image:height"]}' width='#{imgur_data[:"image:width"]}'></a></div>" if is_album?
14
- return "<a href='#{url}' target='_blank'><img src='#{get_secure_link(imgur_data[:image])}' alt='Imgur' height='#{imgur_data[:"image:height"]}' width='#{imgur_data[:"image:width"]}'></a>" if imgur_data[:image]
12
+ return "<video width='#{imgur_data[:"video:width"]}' height='#{imgur_data[:"video:height"]}' #{Helpers.title_attr(imgur_data)} controls autoplay loop><source src='#{imgur_data[:"video:secure_url"]}' type='video/mp4'><source src='#{imgur_data[:"video:secure_url"].gsub('mp4', 'webm')}' type='video/webm'></video>" if imgur_data[:"video:secure_url"]
13
+ return "<div class='onebox imgur-album'><a href='#{url}' target='_blank'><span class='outer-box' style='width:#{imgur_data[:"image:width"]}px'><span class='inner-box'><span class='album-title'>[Album] #{imgur_data[:title]}</span></span></span><img src='#{get_secure_link(imgur_data[:image])}' #{Helpers.title_attr(imgur_data)} height='#{imgur_data[:"image:height"]}' width='#{imgur_data[:"image:width"]}'></a></div>" if is_album?
14
+ return "<a href='#{url}' target='_blank'><img src='#{get_secure_link(imgur_data[:image])}' #{Helpers.title_attr(imgur_data)} alt='Imgur' height='#{imgur_data[:"image:height"]}' width='#{imgur_data[:"image:width"]}'></a>" if imgur_data[:image]
15
15
  return nil
16
16
  end
17
17
 
18
18
  def placeholder_html
19
19
  imgur_data = get_imgur_data
20
- return "<video width='#{imgur_data[:"video:width"]}' height='#{imgur_data[:"video:height"]}' controls autoplay loop><source src='#{imgur_data[:"video:secure_url"]}' type='video/mp4'><source src='#{imgur_data[:"video:secure_url"].gsub('mp4', 'webm')}' type='video/webm'></video>" if imgur_data[:"video:secure_url"]
21
- return "<img src='#{get_secure_link(imgur_data[:image])}' alt='Imgur' height='#{imgur_data[:"image:height"]}' width='#{imgur_data[:"image:width"]}'>"
20
+ return "<video width='#{imgur_data[:"video:width"]}' height='#{imgur_data[:"video:height"]}' #{Helpers.title_attr(imgur_data)} controls autoplay loop><source src='#{imgur_data[:"video:secure_url"]}' type='video/mp4'><source src='#{imgur_data[:"video:secure_url"].gsub('mp4', 'webm')}' type='video/webm'></video>" if imgur_data[:"video:secure_url"]
21
+ return "<img src='#{get_secure_link(imgur_data[:image])}' #{Helpers.title_attr(imgur_data)} alt='Imgur' height='#{imgur_data[:"image:height"]}' width='#{imgur_data[:"image:width"]}'>"
22
22
  return nil
23
23
  end
24
24
 
@@ -13,7 +13,7 @@ module Onebox
13
13
 
14
14
  def placeholder_html
15
15
  return if Onebox::Helpers.blank?(oembed_data[:thumbnail_url])
16
- "<img src='#{oembed_data[:thumbnail_url]}'>"
16
+ "<img src='#{oembed_data[:thumbnail_url]}' #{Helpers.title_attr(oembed_data)}>"
17
17
  end
18
18
 
19
19
  private
@@ -9,7 +9,7 @@ module Onebox
9
9
 
10
10
  def placeholder_html
11
11
  oembed = get_oembed
12
- "<img src='#{oembed[:thumbnail_url]}' width='#{oembed[:thumbnail_width]}' height='#{oembed[:thumbnail_height]}'>"
12
+ "<img src='#{oembed[:thumbnail_url]}' width='#{oembed[:thumbnail_width]}' height='#{oembed[:thumbnail_height]}' #{Helpers.title_attr(oembed)}>"
13
13
  end
14
14
 
15
15
  def to_html
@@ -12,9 +12,9 @@ module Onebox
12
12
 
13
13
  def placeholder_html
14
14
  if video_id
15
- "<img src='https://i.ytimg.com/vi/#{video_id}/hqdefault.jpg' width='#{WIDTH}' height='#{HEIGHT}'>"
15
+ "<img src='https://i.ytimg.com/vi/#{video_id}/hqdefault.jpg' width='#{WIDTH}' height='#{HEIGHT}' #{Helpers.title_attr(video_oembed_data)}>"
16
16
  elsif list_id
17
- "<img src='#{list_thumbnail_url}' width='#{WIDTH}' height='#{HEIGHT}'>"
17
+ "<img src='#{list_thumbnail_url}' width='#{WIDTH}' height='#{HEIGHT}' #{Helpers.title_attr(list_oembed_data)}>"
18
18
  else
19
19
  to_html
20
20
  end
@@ -50,9 +50,7 @@ module Onebox
50
50
 
51
51
  def video_title
52
52
  @video_title ||= begin
53
- url = "https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v=#{video_id}"
54
- data = Onebox::Helpers.symbolize_keys(::MultiJson.load(Onebox::Helpers.fetch_response(url).body))
55
- data[:title]
53
+ video_oembed_data[:title]
56
54
  rescue
57
55
  nil
58
56
  end
@@ -93,6 +91,16 @@ module Onebox
93
91
  end
94
92
  end
95
93
 
94
+ def video_oembed_data
95
+ url = "https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v=#{video_id}"
96
+ Onebox::Helpers.symbolize_keys(::MultiJson.load(Onebox::Helpers.fetch_response(url).body))
97
+ end
98
+
99
+ def list_oembed_data
100
+ url = "https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/playlist?list=#{list_id}"
101
+ Onebox::Helpers.symbolize_keys(::MultiJson.load(Onebox::Helpers.fetch_response(url).body))
102
+ end
103
+
96
104
  def embed_params
97
105
  p = {'feature' => 'oembed', 'wmode' => 'opaque'}
98
106
 
@@ -63,5 +63,9 @@ module Onebox
63
63
  def self.truncate(string, length = 50)
64
64
  string.size > length ? string[0..length] + "..." : string
65
65
  end
66
+
67
+ def self.title_attr(meta)
68
+ (meta && !blank?(meta[:title])) ? "title='#{CGI.escapeHTML(meta[:title])}'" : ""
69
+ end
66
70
  end
67
71
  end
@@ -1,3 +1,3 @@
1
1
  module Onebox
2
- VERSION = "1.6.2"
2
+ VERSION = "1.6.3"
3
3
  end
@@ -0,0 +1 @@
1
+ {"type":"video","provider_url":"https:\/\/www.youtube.com\/","thumbnail_url":"https:\/\/i.ytimg.com\/vi\/21Lk4YiASMo\/hqdefault.jpg","author_name":"korotto5810","title":"96neko - orange","thumbnail_width":480,"width":480,"version":"1.0","html":"\u003ciframe width=\"480\" height=\"270\" src=\"https:\/\/www.youtube.com\/embed\/21Lk4YiASMo?feature=oembed\" frameborder=\"0\" allowfullscreen\u003e\u003c\/iframe\u003e","thumbnail_height":360,"height":270,"author_url":"https:\/\/www.youtube.com\/user\/korotto5810","provider_name":"YouTube"}
@@ -0,0 +1 @@
1
+ {"version":"1.0","title":"The web is what you make of it","thumbnail_url":"https:\/\/i.ytimg.com\/vi\/R4vkVHijdQk\/hqdefault.jpg","type":"video","height":270,"thumbnail_height":360,"provider_name":"YouTube","provider_url":"https:\/\/www.youtube.com\/","author_name":"Google Chrome","width":480,"author_url":"https:\/\/www.youtube.com\/user\/googlechrome","html":"\u003ciframe width=\"480\" height=\"270\" src=\"https:\/\/www.youtube.com\/embed\/videoseries?list=PL5308B2E5749D1696\" frameborder=\"0\" allowfullscreen\u003e\u003c\/iframe\u003e","thumbnail_width":480}
@@ -4,9 +4,10 @@ describe Onebox::Engine::YoutubeOnebox do
4
4
  before do
5
5
  fake("https://www.youtube.com/watch?feature=player_embedded&v=21Lk4YiASMo", response("youtube"))
6
6
  fake("https://youtu.be/21Lk4YiASMo", response("youtube"))
7
- fake("http://www.youtube.com/oembed?format=json&url=http://www.youtube.com/watch?v=21Lk4YiASMo", response("youtube"))
8
7
  fake("https://www.youtube.com/channel/UCL8ZULXASCc1I_oaOT0NaOQ", response("youtube-channel"))
9
8
  fake("https://www.youtube.com/playlist?list=PL5308B2E5749D1696", response("youtube-playlist"))
9
+ fake("https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v=21Lk4YiASMo", response("youtube-json"))
10
+ fake("https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/playlist?list=PL5308B2E5749D1696", response("youtube-list-json"))
10
11
  end
11
12
 
12
13
  it "adds wmode=opaque" do
@@ -28,7 +29,9 @@ describe Onebox::Engine::YoutubeOnebox do
28
29
 
29
30
  it "can onebox a playlist" do
30
31
  expect(Onebox.preview('https://www.youtube.com/playlist?list=PL5308B2E5749D1696').to_s).to match(/iframe/)
31
- expect(Onebox.preview('https://www.youtube.com/playlist?list=PL5308B2E5749D1696').placeholder_html).to match(/<img/)
32
+ placeholder_html = Onebox.preview('https://www.youtube.com/playlist?list=PL5308B2E5749D1696').placeholder_html
33
+ expect(placeholder_html).to match(/<img/)
34
+ expect(placeholder_html).to include("The web is what you make of it")
32
35
  end
33
36
 
34
37
  it "does not make HTTP requests unless necessary" do
@@ -73,4 +76,8 @@ describe Onebox::Engine::YoutubeOnebox do
73
76
  preview.to match(/loop=1/)
74
77
  preview.to match(/playlist=21Lk4YiASMo/)
75
78
  end
79
+
80
+ it "includes title in preview" do
81
+ expect(Onebox.preview("https://youtu.be/21Lk4YiASMo").placeholder_html).to include("96neko - orange")
82
+ end
76
83
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onebox
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
4
+ version: 1.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joanna Zeta
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-11-30 00:00:00.000000000 Z
13
+ date: 2016-12-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: multi_json
@@ -372,6 +372,8 @@ files:
372
372
  - spec/fixtures/youku-meta.response
373
373
  - spec/fixtures/youku.response
374
374
  - spec/fixtures/youtube-channel.response
375
+ - spec/fixtures/youtube-json.response
376
+ - spec/fixtures/youtube-list-json.response
375
377
  - spec/fixtures/youtube.response
376
378
  - spec/lib/onebox/engine/amazon_onebox_spec.rb
377
379
  - spec/lib/onebox/engine/audio_onebox_spec.rb
@@ -447,7 +449,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
447
449
  version: '0'
448
450
  requirements: []
449
451
  rubyforge_project:
450
- rubygems_version: 2.5.1
452
+ rubygems_version: 2.6.7
451
453
  signing_key:
452
454
  specification_version: 4
453
455
  summary: A gem for turning URLs into previews.
@@ -476,6 +478,8 @@ test_files:
476
478
  - spec/fixtures/youku-meta.response
477
479
  - spec/fixtures/youku.response
478
480
  - spec/fixtures/youtube-channel.response
481
+ - spec/fixtures/youtube-json.response
482
+ - spec/fixtures/youtube-list-json.response
479
483
  - spec/fixtures/youtube.response
480
484
  - spec/lib/onebox/engine/amazon_onebox_spec.rb
481
485
  - spec/lib/onebox/engine/audio_onebox_spec.rb
@@ -508,3 +512,4 @@ test_files:
508
512
  - spec/lib/onebox_spec.rb
509
513
  - spec/spec_helper.rb
510
514
  - spec/support/html_spec_helper.rb
515
+ has_rdoc: