Sha256: 8bf01158a2e0658c9b6024093b0f109014fa9d68e7441d236a1323f7e41b4a80

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

class CreateMediaAsset

  require 'carrierwave/processing/mini_magick'

  def initialize file
    @file = file
    @asset = klass.new(data: file)
  end

  # Returns created asset
  def call
    extract_content_type
    set_file_name
    set_size
    read_dimensions
    @asset.save!
    @asset
  end

  private

  def read_dimensions
    if @asset.image? && @asset.has_dimensions?
      magick = ::MiniMagick::Image.new(@asset.data.current_path)
      @asset.width, @asset.height = magick[:width], magick[:height]
    end
  end

  def extract_content_type
    if @file.content_type == 'application/octet-stream' || @file.content_type.blank?
      content_type = MIME::Types.type_for(@file.original_filename).first
    else
      content_type = @file.content_type
    end

    @asset.data_content_type = content_type.to_s
  end

  def set_file_name
    @asset.data_file_name = @file.original_filename
  end

  def set_size
    @asset.data_file_size = @file.size
  end

  def klass
    @file.content_type.match(/^image/) ? Ckeditor::Picture : Ckeditor::Asset
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
georgia-0.7.8 app/services/create_media_asset.rb