Sha256: f507b8848a1debe70e122427838c09f3cf8efdea481ec8eceee818edc3aace00

Contents?: true

Size: 702 Bytes

Versions: 5

Compression:

Stored size: 702 Bytes

Contents

class MediaScrubber
  attr_accessor :original, :filtered, :errors

  def initialize(args)
    @original = args.fetch(:file, nil)
    @filtered = infer_media_type
  end

  def infer_media_type
    return nil unless original.respond_to?(:content_type)
    params = { file: original }
    return AtomicCms::Image.new(params) if original.content_type =~ /image/
    AtomicCms::Video.new(params) if original.content_type =~ /video/
  end

  def valid?
    return false unless filtered
    return true if filtered.valid?
    @errors = filtered.errors
    false
  end

  def save
    return false unless valid?
    filtered.save
  end

  def url
    return nil unless filtered
    filtered.file.url
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
atomic_cms-0.4.0 app/controllers/concerns/media_scrubber.rb
atomic_cms-0.3.3 app/controllers/concerns/media_scrubber.rb
atomic_cms-0.3.2 app/controllers/concerns/media_scrubber.rb
atomic_cms-0.3.1 app/controllers/concerns/media_scrubber.rb
atomic_cms-0.3.0 app/controllers/concerns/media_scrubber.rb