summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-07-08 18:55:49 +0200
committerRémy Coutable <remy@rymai.me>2016-07-19 18:51:09 +0200
commit29ea8d09e05d749f0b6a784311aea942f7d2d0f1 (patch)
tree9326f19dc1a67b3345f2c128f0b1118760fdb094
parent356b2d2bd782289b6130a22531523562514aa7f6 (diff)
downloadgitlab-ce-29ea8d09e05d749f0b6a784311aea942f7d2d0f1.tar.gz
Remove duplication, useless rescue, and avoid using ActionView
Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--app/uploaders/uploader_helper.rb29
-rw-r--r--config/initializers/mime_types.rb6
-rw-r--r--lib/banzai/filter/video_link_filter.rb23
3 files changed, 27 insertions, 31 deletions
diff --git a/app/uploaders/uploader_helper.rb b/app/uploaders/uploader_helper.rb
index 6d510fe7dde..703f7820913 100644
--- a/app/uploaders/uploader_helper.rb
+++ b/app/uploaders/uploader_helper.rb
@@ -1,18 +1,19 @@
# Extra methods for uploader
module UploaderHelper
- IMAGE_EXT = %w(png jpg jpeg gif bmp tiff)
- VIDEO_EXT = %w(mov mp4 ogg webm flv)
+ IMAGE_EXT = %w[png jpg jpeg gif bmp tiff]
+ # We recommend using the .mp4 format over .mov. Videos in .mov format can
+ # still be used but you really need to make sure they are served with the
+ # proper MIME type video/mp4 and not video/quicktime or your videos won’t play
+ # on IE ≥ 9.
+ # http://archive.sublimevideo.info/20150912/docs.sublimevideo.net/troubleshooting.html
+ VIDEO_EXT = %w[mp4 m4v mov webm ogv]
def image?
extension_match?(IMAGE_EXT)
- rescue
- false
end
def video?
extension_match?(VIDEO_EXT)
- rescue
- false
end
def image_or_video?
@@ -20,13 +21,15 @@ module UploaderHelper
end
def extension_match?(extensions)
- if file.respond_to?(:extension)
- extensions.include?(file.extension.downcase)
- else
- # Not all CarrierWave storages respond to :extension
- ext = file.path.split('.').last.downcase
- extensions.include?(ext)
- end
+ extension =
+ if file.respond_to?(:extension)
+ file.extension
+ else
+ # Not all CarrierWave storages respond to :extension
+ File.extname(file.path).delete('.')
+ end
+
+ extensions.include?(extension.downcase)
end
def file_storage?
diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb
index 4c6de622f17..cd449b65818 100644
--- a/config/initializers/mime_types.rb
+++ b/config/initializers/mime_types.rb
@@ -9,8 +9,6 @@ Mime::Type.register_alias "text/plain", :patch
Mime::Type.register_alias "text/html", :markdown
Mime::Type.register_alias "text/html", :md
+Mime::Type.register "video/mp4", :mp4, [], [:m4v, :mov]
Mime::Type.register "video/webm", :webm
-Mime::Type.register "video/ogg", :ogg
-Mime::Type.register "video/ogg", :ogv
-Mime::Type.register "video/mp4", :mp4
-Mime::Type.register "video/mp4", :m4v
+Mime::Type.register "video/ogg", :ogv, [], [:ogg]
diff --git a/lib/banzai/filter/video_link_filter.rb b/lib/banzai/filter/video_link_filter.rb
index 0ae885708f7..a8316e72a68 100644
--- a/lib/banzai/filter/video_link_filter.rb
+++ b/lib/banzai/filter/video_link_filter.rb
@@ -7,13 +7,9 @@ module Banzai
include ActionView::Helpers::TagHelper
include ActionView::Context
- EXTENSIONS = %w(.mov .mp4 .ogg .webm .flv)
-
def call
doc.search('img').each do |el|
- if video?(el)
- el.replace video_node(el)
- end
+ el.replace(video_tag(doc, el)) if video?(el)
end
doc
@@ -22,19 +18,18 @@ module Banzai
private
def video?(element)
- EXTENSIONS.include? File.extname(element.attribute('src').value)
+ extension = File.extname(element.attribute('src').value).delete('.')
+ UploaderHelper::VIDEO_EXT.include?(extension)
end
# Return a video tag Nokogiri node
#
- def video_node(element)
- vtag = content_tag(:video, "", {
- src: element.attribute('src').value,
- class: 'video-js', preload: 'auto',
- controls: true
- })
-
- Nokogiri::HTML::DocumentFragment.parse(vtag)
+ def video_node(doc, element)
+ doc.document.create_element(
+ 'video',
+ src: element.attribute('src').value,
+ class: 'video-js',
+ controls: true)
end
end