Commit a95e0de0e4c413f0712a8cd5500f5970ff84b7fb

Authored by Victor Costa
1 parent a5c0c0f3

video: fix youtube id format

plugins/video/lib/video_block.rb
... ... @@ -4,8 +4,10 @@ class VideoBlock < Block
4 4 settings_items :width, :type => :integer, :default => 400
5 5 settings_items :height, :type => :integer, :default => 315
6 6  
  7 + YOUTUBE_ID_FORMAT = 'a-zA-Z0-9_-'
  8 +
7 9 def is_youtube?
8   - url.match(/.*(youtube.com.*v=[[:alnum:]]+|youtu.be\/[[:alnum:]]+).*/) ? true : false
  10 + url.match(/.*(youtube.com.*v=[#{YOUTUBE_ID_FORMAT}]+|youtu.be\/[#{YOUTUBE_ID_FORMAT}]+).*/) ? true : false
9 11 end
10 12  
11 13 def is_vimeo?
... ... @@ -44,8 +46,8 @@ class VideoBlock < Block
44 46  
45 47 def extract_youtube_id
46 48 return nil unless is_youtube?
47   - youtube_match = url.match('v=([[:alnum:]]*)')
48   - youtube_match ||= url.match('youtu.be\/([[:alnum:]]*)')
  49 + youtube_match = url.match("v=([#{YOUTUBE_ID_FORMAT}]*)")
  50 + youtube_match ||= url.match("youtu.be\/([#{YOUTUBE_ID_FORMAT}]*)")
49 51 youtube_match[1] unless youtube_match.nil?
50 52 end
51 53  
... ...
plugins/video/test/unit/video_block_test.rb
... ... @@ -70,6 +70,13 @@ class VideoBlockTest < ActiveSupport::TestCase
70 70 assert_equal id, block.send('extract_youtube_id')
71 71 end
72 72  
  73 + should "extract youtube id from youtube video url's if it has underline and hyphen" do
  74 + block = VideoBlock.new
  75 + id = 'oi43_re-d2'
  76 + block.url = "youtube.com/?v=#{id}"
  77 + assert_equal id, block.send('extract_youtube_id')
  78 + end
  79 +
73 80 should "extract youtube id from youtube video url's if it's a valid youtube short url" do
74 81 block = VideoBlock.new
75 82 id = 'oi43jre2d2'
... ...