summaryrefslogtreecommitdiff
path: root/lib/booru/image_processing.rb
blob: c4a546b59dbf8a6c8039240c64d0a2e8cc3361fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 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