class Flickr::SanitizedFile

File that users provide for uploading can come from various sources (Rails, Sinatra etc). This class attempts to sanitize it, pulling out the path, content type, and the actual file.

@private

Attributes

content_type[R]
file[R]
path[R]

Public Class Methods

new(original) click to toggle source

@param original [String, File, Rails, Sinatra]

Calls superclass method
# File lib/flickr/sanitized_file.rb, line 19
def initialize(original)
  @original = original
  sanitize!
  super(@file)
end

Private Instance Methods

io?() click to toggle source
# File lib/flickr/sanitized_file.rb, line 60
def io?
  @original.respond_to?(:read)
end
rails_file?() click to toggle source
# File lib/flickr/sanitized_file.rb, line 52
def rails_file?
  defined?(Rails) and @original.is_a?(ActionDispatch::Http::UploadedFile)
end
sanitize!() click to toggle source

Extracts the tempfile, content type and path.

# File lib/flickr/sanitized_file.rb, line 30
def sanitize!
  if rails_file?
    @file = @original
    @content_type = @original.content_type
    @path = @original.tempfile
  elsif sinatra_file?
    @file = @original[:tempfile]
    @content_type = @original[:type]
    @path = @original[:tempfile].path
  elsif io?
    @file = @original
    @content_type = @original.content_type if @original.respond_to?(:content_type)
    @path = @original.path if @original.respond_to?(:path)
  elsif string?
    @file = File.open(@original)
    @content_type = nil
    @path = @original
  else
    raise ArgumentError, "invalid file format"
  end
end
sinatra_file?() click to toggle source
# File lib/flickr/sanitized_file.rb, line 56
def sinatra_file?
  defined?(Sinatra) and @original.is_a?(Hash)
end
string?() click to toggle source
# File lib/flickr/sanitized_file.rb, line 64
def string?
  @original.is_a?(String)
end