Sha256: 625f895562dcc2476b434c780ef3d0fd388d2cfe2545d31ed5a76049d11c6128

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

module Paperclip
  class StringioAdapter
    def initialize(target)
      @target = target
      @tempfile = copy_to_tempfile(@target)
    end

    attr_writer :original_filename, :content_type

    def original_filename
      @original_filename ||= @target.original_filename if @target.respond_to?(:original_filename)
      @original_filename ||= "stringio.txt"
      @original_filename.strip
    end

    def content_type
      @content_type ||= @target.content_type if @target.respond_to?(:content_type)
      @content_type ||= "text/plain"
      @content_type.strip
    end

    def size
      @target.size
    end

    def fingerprint
      Digest::MD5.hexdigest(read)
    end

    def read(length = nil, buffer = nil)
      @tempfile.read(length, buffer)
    end

    # We don't use this directly, but aws/sdk does.
    def rewind
      @tempfile.rewind
    end

    def eof?
      @tempfile.eof?
    end

    def path
      @tempfile.path
    end

    private

    def copy_to_tempfile(src)
      dest = Tempfile.new(original_filename)
      dest.binmode
      while data = src.read(16*1024)
        dest.write(data)
      end
      dest.rewind
      dest
    end

  end
end

Paperclip.io_adapters.register Paperclip::StringioAdapter do |target|
  StringIO === target
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
paperclip-3.0.2 lib/paperclip/io_adapters/stringio_adapter.rb