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