# frozen_string_literal: true require 'media_tools' require 'booru/image_processing/processor' require 'booru/image_processing/png_processor' require 'booru/image_processing/jpeg_processor' require 'booru/image_processing/gif_processor' require 'booru/image_processing/svg_processor' require 'booru/image_processing/webm_processor' require 'booru/image_processing/mp4_processor' module Booru module ImageProcessing PROCESSORS = { 'image/png' => PngProcessor, 'image/jpeg' => JpegProcessor, 'image/gif' => GifProcessor, 'image/svg+xml' => SvgProcessor, 'video/webm' => WebMProcessor, 'video/mp4' => Mp4Processor }.freeze def self.processor_for_content_type(content_type) PROCESSORS[content_type] end def self.processor_for_file(path) metadata = MediaTools.stat(path).to_h PROCESSORS[metadata[:mime]].new(path, nil, metadata) end end end