Class: HTTP::FormData::File

Inherits:
Part
  • Object
show all
Defined in:
lib/http/form_data/file.rb

Overview

Represents file form param.

Examples:

Usage with StringIO


io = StringIO.new "foo bar baz"
FormData::File.new io, :filename => "foobar.txt"

Usage with IO


File.open "/home/ixti/avatar.png" do |io|
  FormData::File.new io
end

Usage with pathname


FormData::File.new "/home/ixti/avatar.png"

Constant Summary collapse

DEFAULT_MIME =

Default MIME type

"application/octet-stream"

Instance Attribute Summary

Attributes inherited from Part

#content_type, #filename

Instance Method Summary collapse

Constructor Details

#initialize(file_or_io, opts = {}) ⇒ File

Returns a new instance of File.

Parameters:

  • file_or_io (String, StringIO, File)

    Filename or IO instance.

  • opts (#to_h) (defaults to: {})

Options Hash (opts):

  • :content_type (#to_s) — default: DEFAULT_MIME

    Value of Content-Type header

  • :filename (#to_s)

    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}"

See Also:



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/http/form_data/file.rb', line 37

def initialize(file_or_io, opts = {})
  opts = FormData.ensure_hash(opts)

  if opts.key? :mime_type
    warn "[DEPRECATED] :mime_type option deprecated, use :content_type"
    opts[:content_type] = opts[:mime_type]
  end

  @file_or_io   = file_or_io
  @content_type = opts.fetch(:content_type, DEFAULT_MIME).to_s
  @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

Instance Method Details

#sizeInteger

Returns content size.

Returns:

  • (Integer)


59
60
61
# File 'lib/http/form_data/file.rb', line 59

def size
  with_io(&:size)
end

#to_sString

Returns content of a file of IO.

Returns:

  • (String)


66
67
68
# File 'lib/http/form_data/file.rb', line 66

def to_s
  with_io(&:read)
end