about summary refs log tree commit diff
path: root/lib/paperclip
diff options
context:
space:
mode:
Diffstat (limited to 'lib/paperclip')
-rw-r--r--lib/paperclip/audio_transcoder.rb23
-rw-r--r--lib/paperclip/type_corrector.rb19
2 files changed, 19 insertions, 23 deletions
diff --git a/lib/paperclip/audio_transcoder.rb b/lib/paperclip/audio_transcoder.rb
deleted file mode 100644
index 323ec7bfe..000000000
--- a/lib/paperclip/audio_transcoder.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# frozen_string_literal: true
-
-module Paperclip
-  class AudioTranscoder < Paperclip::Processor
-    def make
-      max_aud_len = (ENV['MAX_AUDIO_LENGTH'] || 60.0).to_f
-
-      meta = ::Av.cli.identify(@file.path)
-      # {:length=>"0:00:02.14", :duration=>2.14, :audio_encode=>"mp3", :audio_bitrate=>"44100 Hz", :audio_channels=>"mono"}
-      if meta[:duration] > max_aud_len
-        raise Mastodon::ValidationError, "Audio uploads must be less than #{max_aud_len} seconds in length."
-      end
-      
-      final_file = Paperclip::Transcoder.make(file, options, attachment)
-      
-      attachment.instance.file_file_name    = 'media.mp4'
-      attachment.instance.file_content_type = 'video/mp4'
-      attachment.instance.type              = MediaAttachment.types[:video]
-
-      final_file
-    end
-  end
-end
diff --git a/lib/paperclip/type_corrector.rb b/lib/paperclip/type_corrector.rb
new file mode 100644
index 000000000..0b0c10a56
--- /dev/null
+++ b/lib/paperclip/type_corrector.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+require 'mime/types/columnar'
+
+module Paperclip
+  class TypeCorrector < Paperclip::Processor
+    def make
+      target_extension = options[:format]
+      extension        = File.extname(attachment.instance.file_file_name)
+
+      return @file unless options[:style] == :original && target_extension && extension != target_extension
+
+      attachment.instance.file_content_type = options[:content_type] || attachment.instance.file_content_type
+      attachment.instance.file_file_name    = File.basename(attachment.instance.file_file_name, '.*') + '.' + target_extension
+
+      @file
+    end
+  end
+end