class HTTP::FormData::File
Represents file form param.
@example Usage with StringIO
io = StringIO.new "foo bar baz" FormData::File.new io, :filename => "foobar.txt"
@example Usage with IO
File.open "/home/ixti/avatar.png" do |io| FormData::File.new io end
@example Usage with pathname
FormData::File.new "/home/ixti/avatar.png"
Constants
- DEFAULT_MIME
Default MIME type
Attributes
filename[R]
mime_type[R]
Public Class Methods
new(file_or_io, opts = {})
click to toggle source
@see DEFAULT_MIME @param [String, StringIO, File] file_or_io Filename or IO instance. @param [#to_h] opts @option opts [#to_s] :mime_type (DEFAULT_MIME) @option opts [#to_s] :filename
When `file` is a String, defaults to basename of `file`. When `file` is a File, defaults to basename of `file`. When `file` is a StringIO, defaults to `"stream-{object_id}"`
# File lib/http/form_data/file.rb, line 33 def initialize(file_or_io, opts = {}) @file_or_io = file_or_io opts = FormData.ensure_hash opts @mime_type = opts.fetch(:mime_type) { DEFAULT_MIME } @filename = opts.fetch :filename do case file_or_io when String then ::File.basename file_or_io when ::File then ::File.basename file_or_io.path else "stream-#{file_or_io.object_id}" end end end
Public Instance Methods
size()
click to toggle source
Returns content size.
@return [Fixnum]
# File lib/http/form_data/file.rb, line 51 def size with_io(&:size) end
to_s()
click to toggle source
Returns content of a file of IO.
@return [String]
# File lib/http/form_data/file.rb, line 58 def to_s with_io(&:read) end
Private Instance Methods
with_io() { |file_or_io| ... }
click to toggle source
@yield [io] Gives IO instance to the block @return result of yielded block
# File lib/http/form_data/file.rb, line 66 def with_io if @file_or_io.is_a?(::File) || @file_or_io.is_a?(StringIO) yield @file_or_io else ::File.open(@file_or_io) { |io| yield io } end end