Class: Protocol::Multipart::IOPart
- Extended by:
- Escape
- Defined in:
- lib/protocol/multipart/io_part.rb
Overview
A part that contains IO content (files, streams, etc.).
Instance Attribute Summary collapse
-
#io ⇒ Object
readonly
The underlying IO object.
Attributes inherited from Part
Class Method Summary collapse
-
.open(path, mime_type: nil, name: nil, headers: {}) ⇒ Object
Opens a file and creates an IOPart for it.
Instance Method Summary collapse
-
#call(writable, boundary) ⇒ Object
Write the part’s content to the provided writable stream.
-
#initialize(headers, io) ⇒ IOPart
constructor
Initialize a new IOPart with the given headers and IO object.
-
#The IO object containing the part's data.=(IOobjectcontainingthepart's data. = (value)) ⇒ Object
The underlying IO object.
Methods included from Escape
escape_field_name, unescape_field_name
Methods inherited from Part
#The headers as name/value pairs.=
Constructor Details
#initialize(headers, io) ⇒ IOPart
Initialize a new IOPart with the given headers and IO object.
39 40 41 42 |
# File 'lib/protocol/multipart/io_part.rb', line 39 def initialize(headers, io) super(headers) @io = io end |
Instance Attribute Details
#io ⇒ Object (readonly)
The underlying IO object.
46 47 48 |
# File 'lib/protocol/multipart/io_part.rb', line 46 def io @io end |
Class Method Details
.open(path, mime_type: nil, name: nil, headers: {}) ⇒ Object
Opens a file and creates an IOPart for it.
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/protocol/multipart/io_part.rb', line 22 def self.open(path, mime_type: nil, name: nil, headers: {}) io = File.open(path, "rb") name ||= File.basename(path) headers = headers.merge( "content-disposition" => "attachment; filename=\"#{escape_field_name name}\"", "content-type" => mime_type || "application/octet-stream" ) return new(headers, io) end |
Instance Method Details
#call(writable, boundary) ⇒ Object
Write the part’s content to the provided writable stream.
52 53 54 55 56 57 |
# File 'lib/protocol/multipart/io_part.rb', line 52 def call(writable, boundary) while chunk = @io.read(8192) break if chunk.empty? writable.write(chunk) end end |
#The IO object containing the part's data.=(IOobjectcontainingthepart's data. = (value)) ⇒ Object
The underlying IO object.
46 |
# File 'lib/protocol/multipart/io_part.rb', line 46 attr_reader :io |