lib/video_player.rb in video_player-0.1.4 vs lib/video_player.rb in video_player-1.0.0
- old
+ new
@@ -1,37 +1,70 @@
require "video_player/version"
module VideoPlayer
- def self.player url, width = "420", height = "315", autoplay = true
- if url.include? "youtu"
- regex = /(https?:\/\/)?(www.)?(youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/watch\?feature=player_embedded&v=)([A-Za-z0-9_-]*)(\&\S+)?(\?\S+)?/
- url.gsub(regex) do
- youtube_id = $4
- if autoplay
- src = "//www.youtube.com/embed/#{youtube_id}?autoplay=1&rel=0"
- else
- src = "//www.youtube.com/embed/#{youtube_id}?autoplay=0&rel=0"
- end
- return %{<iframe width="#{width}" height="#{height}" src="#{src}" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>}
+ def self.player(*args)
+ VideoPlayer::Parser.new(*args).embed_code
+ end
+
+ class Parser
+ DefaultWidth = '420'
+ DefaultHeight = '315'
+ DefaultAutoPlay = true
+
+ YouTubeRegex = /\A(https?:\/\/)?(www.)?(youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/watch\?feature=player_embedded&v=)([A-Za-z0-9_-]*)(\&\S+)?(\?\S+)?/i
+ VimeoRegex = /\Ahttps?:\/\/(www.)?vimeo\.com\/([A-Za-z0-9._%-]*)((\?|#)\S+)?/i
+ IzleseneRegex = /\Ahttp:\/\/(?:.*?)\izlesene\.com\/video\/([\w\-\.]+[^#?\s]+)\/(.*)?$/i
+ WistiaRegex = /\Ahttps?:\/\/(.+)?(wistia.com|wi.st)\/(medias|embed)\/([A-Za-z0-9_-]*)(\&\S+)?(\?\S+)?/i
+
+ attr_accessor :url, :width, :height
+
+ def initialize(url, width = DefaultWidth, height = DefaultHeight, autoplay = DefaultAutoPlay)
+ @url = url
+ @width = width
+ @height = height
+ @autoplay = autoplay
+ end
+
+ def embed_code
+ case
+ when matchdata = url.match(YouTubeRegex)
+ youtube_embed(matchdata[4])
+ when matchdata = url.match(VimeoRegex)
+ vimeo_embed(matchdata[2])
+ when matchdata = url.match(IzleseneRegex)
+ izlesene_embed(matchdata[2])
+ when matchdata = url.match(WistiaRegex)
+ wistia_embed(matchdata[4])
+ else
+ false
end
- elsif url.include? "vimeo"
- url.gsub(/https?:\/\/(www.)?vimeo\.com\/([A-Za-z0-9._%-]*)((\?|#)\S+)?/) do
- vimeo_id = $2
- frameborder = 0
- return %{<iframe src="//player.vimeo.com/video/#{vimeo_id}" width="#{width}" height="#{height}" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>}
- end
- elsif url.include? "izlesene"
- regex = /^http:\/\/(?:.*?)\izlesene\.com\/video\/([\w\-\.]+[^#?\s]+)\/(.*)?$/i
- url.gsub(regex) do
- izlesene_video_id = $2
- if autoplay
- src = "//www.izlesene.com/embedplayer/#{izlesene_video_id}/?autoplay=1&showrel=0&showinfo=0"
- else
- src = "//www.izlesene.com/embedplayer/#{izlesene_video_id}/?autoplay=0&showrel=0&showinfo=0"
- end
- return %{<iframe width="#{width}" height="#{height}" src="#{src}" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>}
- end
- else
- return false
+ end
+
+ def autoplay
+ !!@autoplay ? '1' : '0'
+ end
+
+ def iframe_code(src)
+ %{<iframe src="#{src}" width="#{width}" height="#{height}" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>}
+ end
+
+ def youtube_embed(video_id)
+ src = "//www.youtube.com/embed/#{video_id}?autoplay=#{autoplay}&rel=0"
+ iframe_code(src)
+ end
+
+ def vimeo_embed(video_id)
+ src = "//player.vimeo.com/video/#{video_id}"
+ iframe_code(src)
+ end
+
+ def izlesene_embed(video_id)
+ src = "//www.izlesene.com/embedplayer/#{video_id}/?autoplay=#{autoplay}&showrel=0&showinfo=0"
+ iframe_code(src)
+ end
+
+ def wistia_embed(video_id)
+ src = "//fast.wistia.net/embed/iframe/#{video_id}/?autoplay=#{autoplay}&showrel=0&showinfo=0"
+ iframe_code(src)
end
end
end
\ No newline at end of file