embed 0.0.3 → 0.0.4

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.
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  An easy way to embed media to your Rails app. Don't worry about messy embedding HTML anymore, just use the media URL.
4
4
 
5
- As of now, it only supports YouTube, Vimeo and SoundCloud.
5
+ As of now, it only supports YouTube, Vimeo, Wistia and SoundCloud.
6
6
 
7
7
  ## Installation
8
8
 
@@ -20,11 +20,16 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- On your view:
23
+ On your view
24
+
24
25
  ```ruby
25
26
  <%= embed("http://www.youtube.com/watch?v=fwncgZ15RVQ") %>
26
27
  ```
27
28
 
29
+ ```ruby
30
+ <%= embed('http://www.youtube.com/watch?v=fwncgZ15RVQ', {:width => 540, :height => 290}) %>
31
+ ```
32
+
28
33
  ## Contributing
29
34
 
30
35
  1. Fork it
data/embed.gemspec CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |gem|
14
14
 
15
15
  gem.add_development_dependency 'rspec'
16
16
  gem.add_development_dependency 'rake'
17
+ gem.add_development_dependency 'fakeweb'
17
18
 
18
19
  gem.files = `git ls-files`.split($/)
19
20
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
data/lib/embed.rb CHANGED
@@ -2,20 +2,21 @@ require "embed/version"
2
2
  require 'embed_helper'
3
3
 
4
4
  module Embed
5
- def self.youtube_video_id(url)
6
- if url[/^.*((v\/)|(embed\/)|(watch\?))\??v?=?([^\&\?]*).*/]
7
- return $5
8
- elsif url[/youtu\.be\/([^\?]*)/]
9
- return $1
10
- end
11
- end
12
- def self.vimeo_video_id(url)
13
- if url[/vimeo.com\/([^\?]*)/]
14
- return $1
15
- end
16
- end
5
+ def self.youtube_video_id(url)
6
+ if url[/^.*((v\/)|(embed\/)|(watch\?))\??v?=?([^\&\?]*).*/]
7
+ return $5
8
+ elsif url[/youtu\.be\/([^\?]*)/]
9
+ return $1
10
+ end
11
+ end
12
+
13
+ def self.vimeo_video_id(url)
14
+ if url[/vimeo.com\/([^\?]*)/]
15
+ return $1
16
+ end
17
+ end
17
18
  end
18
19
 
19
20
  if defined?(ActionView::Base)
20
- ActionView::Base.send :include, Embed::EmbedHelper
21
+ ActionView::Base.send :include, Embed::EmbedHelper
21
22
  end
data/lib/embed/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Embed
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/embed_helper.rb CHANGED
@@ -5,37 +5,57 @@ require 'uri'
5
5
  require 'cgi'
6
6
 
7
7
  module Embed
8
- module EmbedHelper
9
- def youtube_embed(url)
10
- video_id = Embed.youtube_video_id(url)
11
- html = %Q{<iframe id="#{video_id}" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/#{video_id}?autoplay=0 frameborder="0"/>}
12
- html.respond_to?(:html_safe) ? html.html_safe : html
13
- end
14
- def vimeo_embed(url)
15
- video_id = Embed.vimeo_video_id(url)
16
- html = %Q{<iframe src="http://player.vimeo.com/video/#{video_id}" width="640" height="390" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>}
17
- html.respond_to?(:html_safe) ? html.html_safe : html
18
- end
19
- def soundcloud_embed(url)
20
- uri = URI("http://soundcloud.com/oembed")
21
- params = {:format => 'json', :url => url}
22
- uri.query = params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&')
23
- response = Net::HTTP.get(uri)
24
- if response
25
- html = JSON.parse(response)["html"]
26
- html.respond_to?(:html_safe) ? html.html_safe : html
27
- else
28
- return link_to(url)
29
- end
30
- end
31
- def embed(url)
32
- if url[/(youtube.com|youtu.be)/]
33
- return youtube_embed(url)
34
- elsif url[/vimeo.com/]
35
- return vimeo_embed(url)
36
- elsif url[/soundcloud.com/]
37
- return soundcloud_embed(url)
38
- end
39
- end
40
- end
41
- end
8
+ module EmbedHelper
9
+ def _youtube_embed(url, width, height)
10
+ video_id = Embed.youtube_video_id(url)
11
+ html = %Q{<iframe id="#{video_id}" type="text/html" width="#{width}" height="#{height}" src="http://www.youtube.com/embed/#{video_id}?autoplay=0 frameborder="0"/>}
12
+ html.respond_to?(:html_safe) ? html.html_safe : html
13
+ end
14
+
15
+ def _vimeo_embed(url, width, height)
16
+ video_id = Embed.vimeo_video_id(url)
17
+ html = %Q{<iframe src="http://player.vimeo.com/video/#{video_id}" width="#{width}" height="#{height}" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>}
18
+ html.respond_to?(:html_safe) ? html.html_safe : html
19
+ end
20
+
21
+ def _soundcloud_embed(url)
22
+ params = {:format => 'json', :url => url}
23
+ _oembed('http://soundcloud.com/oembed', url, params)
24
+ end
25
+
26
+ def _wistia_embed(url, width, height)
27
+ params = { :format => 'json', :url => url, :width => width, :height => height }
28
+ _oembed('http://fast.wistia.com/oembed', url, params)
29
+ end
30
+
31
+ def _oembed(oembed_url, url, params)
32
+ uri = URI(oembed_url)
33
+ uri.query = params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&')
34
+ response = Net::HTTP.get(uri)
35
+ if response
36
+ begin
37
+ html = JSON.parse(response)["html"]
38
+ html.respond_to?(:html_safe) ? html.html_safe : html
39
+ rescue JSON::ParserError
40
+ defined?(link_to) ? link_to(url) : url
41
+ end
42
+ else
43
+ defined?(link_to) ? link_to(url) : url
44
+ end
45
+ end
46
+
47
+ def embed(url, params = {})
48
+ params[:width] ||= 640
49
+ params[:height] ||= 390
50
+ if url[/(youtube.com|youtu.be)/]
51
+ return _youtube_embed(url, params[:width], params[:height])
52
+ elsif url[/vimeo.com/]
53
+ return _vimeo_embed(url, params[:width], params[:height])
54
+ elsif url[/soundcloud.com/]
55
+ return _soundcloud_embed(url)
56
+ elsif url[/wistia.com/]
57
+ return _wistia_embed(url, params[:width], params[:height])
58
+ end
59
+ end
60
+ end
61
+ end
@@ -5,33 +5,65 @@ require 'rspec'
5
5
  include Embed::EmbedHelper
6
6
 
7
7
  describe Embed::EmbedHelper do
8
- let(:youtube_url) { 'http://www.youtube.com/watch?v=u1zgFlCw8Aw' }
9
- let(:vimeo_url) { 'http://vimeo.com/49760839' }
10
- let(:soundcloud_url) { 'http://soundcloud.com/dj-slink/in-for-the-kill-dj-slinks-gets' }
11
- describe '::youtube_embed(url)' do
12
- it 'returns the embedding html for a YouTube URL' do
13
- youtube_embed(youtube_url).should == %Q{<iframe id="u1zgFlCw8Aw" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/u1zgFlCw8Aw?autoplay=0 frameborder="0"/>}
14
- end
15
- end
16
- describe '::vimeo_embed(url)' do
17
- it 'returns the embedding html for a Vimeo URL' do
18
- vimeo_embed(vimeo_url).should == %Q{<iframe src="http://player.vimeo.com/video/49760839" width="640" height="390" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>}
19
- end
20
- end
21
- describe '::soundcloud_embed(url)' do
22
- it 'returns the embedding html for a SoundCloud URL' do
23
- soundcloud_embed(soundcloud_url).should == %Q{<iframe width="100%" height="166" scrolling="no" frameborder="no" src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F60522748&show_artwork=true"></iframe>}
24
- end
25
- end
26
- describe '::embed(url)' do
27
- it 'embeds an YouTube video' do
28
- embed(youtube_url).should == %Q{<iframe id="u1zgFlCw8Aw" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/u1zgFlCw8Aw?autoplay=0 frameborder="0"/>}
29
- end
30
- it 'embeds a Vimeo video' do
31
- embed(vimeo_url).should == %Q{<iframe src="http://player.vimeo.com/video/49760839" width="640" height="390" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>}
32
- end
33
- it 'embeds a SoundCloud audio' do
34
- embed(soundcloud_url).should == %Q{<iframe width="100%" height="166" scrolling="no" frameborder="no" src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F60522748&show_artwork=true"></iframe>}
35
- end
36
- end
37
- end
8
+ let(:youtube_url) { 'http://www.youtube.com/watch?v=u1zgFlCw8Aw' }
9
+ let(:vimeo_url) { 'http://vimeo.com/49760839' }
10
+ let(:soundcloud_url) { 'http://soundcloud.com/forss/flickermood' }
11
+ let(:wistia_url) { 'http://fast.wistia.com/embed/iframe/2cf8fbb2c0' }
12
+
13
+ describe '::_youtube_embed(url, 640, 390)' do
14
+ it 'returns the embedding html for a YouTube URL' do
15
+ _youtube_embed(youtube_url, 640, 390).should == %Q{<iframe id="u1zgFlCw8Aw" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/u1zgFlCw8Aw?autoplay=0 frameborder="0"/>}
16
+ end
17
+ end
18
+
19
+ describe '::_vimeo_embed(url, 640, 390)' do
20
+ it 'returns the embedding html for a Vimeo URL' do
21
+ _vimeo_embed(vimeo_url, 640, 390).should == %Q{<iframe src="http://player.vimeo.com/video/49760839" width="640" height="390" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>}
22
+ end
23
+ end
24
+
25
+ describe '::_soundcloud_embed(url)' do
26
+ it 'returns the embedding html for a SoundCloud URL' do
27
+ _soundcloud_embed(soundcloud_url).should == %Q{<iframe width=\"100%\" height=\"166\" scrolling=\"no\" frameborder=\"no\" src=\"http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F293&show_artwork=true\"></iframe>}
28
+ end
29
+ end
30
+
31
+ describe '::_wistia_embed(url, 640, 390)' do
32
+ it 'returns the embedding html for a Wisita URL' do
33
+ _wistia_embed(wistia_url, 640, 390).should == %Q{<iframe src="http://fast.wistia.com/embed/iframe/2cf8fbb2c0?version=v1&videoHeight=360&videoWidth=640" allowtransparency="true" frameborder="0" scrolling="no" class="wistia_embed" name="wistia_embed" width="640" height="390"></iframe>}
34
+ end
35
+ end
36
+
37
+ describe '::embed(url)' do
38
+ it 'embeds an YouTube video' do
39
+ embed(youtube_url).should == %Q{<iframe id="u1zgFlCw8Aw" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/u1zgFlCw8Aw?autoplay=0 frameborder="0"/>}
40
+ end
41
+
42
+ it 'embeds a Vimeo video' do
43
+ embed(vimeo_url).should == %Q{<iframe src="http://player.vimeo.com/video/49760839" width="640" height="390" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>}
44
+ end
45
+
46
+ it 'embeds a SoundCloud audio' do
47
+ embed(soundcloud_url).should == %Q{<iframe width=\"100%\" height=\"166\" scrolling=\"no\" frameborder=\"no\" src=\"http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F293&show_artwork=true\"></iframe>}
48
+ end
49
+ end
50
+
51
+ describe '::embed(url, 540, 290)' do
52
+ it 'embeds an YouTube video with custom sizes' do
53
+ embed(youtube_url, {:width => 540, :height => 290}).should == %Q{<iframe id="u1zgFlCw8Aw" type="text/html" width="540" height="290" src="http://www.youtube.com/embed/u1zgFlCw8Aw?autoplay=0 frameborder="0"/>}
54
+ end
55
+
56
+ it 'embeds a Vimeo video with custom sizes' do
57
+ embed(vimeo_url, {:width => 540, :height => 290}).should == %Q{<iframe src="http://player.vimeo.com/video/49760839" width="540" height="290" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>}
58
+ end
59
+
60
+ #FIXME: Wistia always return videoHeight=360&videoWidth=640 ??
61
+ it 'embeds a Wistia video with custom sizes' do
62
+ embed(wistia_url, {:width => 540, :height => 290}).should == %Q{<iframe src="http://fast.wistia.com/embed/iframe/2cf8fbb2c0?version=v1&videoHeight=360&videoWidth=640" allowtransparency="true" frameborder="0" scrolling="no" class="wistia_embed" name="wistia_embed" width="540" height="290"></iframe>}
63
+ end
64
+
65
+ it 'embeds a SoundCloud audio' do
66
+ embed(soundcloud_url).should == %Q{<iframe width=\"100%\" height=\"166\" scrolling=\"no\" frameborder=\"no\" src=\"http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F293&show_artwork=true\"></iframe>}
67
+ end
68
+ end
69
+ end
@@ -5,20 +5,22 @@ require 'rspec'
5
5
  include Embed
6
6
 
7
7
  describe Embed do
8
- describe '::youtube_video_id(url)' do
9
- it 'returns the YouTube video id from a full URL' do
10
- url = 'http://www.youtube.com/watch?v=dMH0bHeiRNg'
11
- Embed.youtube_video_id(url).should == 'dMH0bHeiRNg'
12
- end
13
- it 'returns the YouTube video id from a short URL' do
14
- url = 'http://youtu.be/dMH0bHeiRNg'
15
- Embed.youtube_video_id(url).should == 'dMH0bHeiRNg'
16
- end
17
- end
18
- describe '::vimeo_video_id(url)' do
19
- it 'returns the Vimeo video id from its URL' do
20
- url = 'http://vimeo.com/49760839'
21
- Embed.vimeo_video_id(url).should == '49760839'
22
- end
23
- end
8
+ describe '::youtube_video_id(url)' do
9
+ it 'returns the YouTube video id from a full URL' do
10
+ url = 'http://www.youtube.com/watch?v=dMH0bHeiRNg'
11
+ Embed.youtube_video_id(url).should == 'dMH0bHeiRNg'
12
+ end
13
+
14
+ it 'returns the YouTube video id from a short URL' do
15
+ url = 'http://youtu.be/dMH0bHeiRNg'
16
+ Embed.youtube_video_id(url).should == 'dMH0bHeiRNg'
17
+ end
18
+ end
19
+
20
+ describe '::vimeo_video_id(url)' do
21
+ it 'returns the Vimeo video id from its URL' do
22
+ url = 'http://vimeo.com/49760839'
23
+ Embed.vimeo_video_id(url).should == '49760839'
24
+ end
25
+ end
24
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-23 00:00:00.000000000 Z
12
+ date: 2012-11-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: fakeweb
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
46
62
  description: An easy way to embed media to your Rails app
47
63
  email:
48
64
  - me@neil.pro
@@ -75,7 +91,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
75
91
  version: '0'
76
92
  segments:
77
93
  - 0
78
- hash: -1582312353035851371
94
+ hash: 2927421669210399932
79
95
  required_rubygems_version: !ruby/object:Gem::Requirement
80
96
  none: false
81
97
  requirements:
@@ -84,10 +100,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
100
  version: '0'
85
101
  segments:
86
102
  - 0
87
- hash: -1582312353035851371
103
+ hash: 2927421669210399932
88
104
  requirements: []
89
105
  rubyforge_project:
90
- rubygems_version: 1.8.24
106
+ rubygems_version: 1.8.23
91
107
  signing_key:
92
108
  specification_version: 3
93
109
  summary: An easy way to embed media to your Rails app