class ChefAPI::Multipart::FilePart
A File part
Public Class Methods
new(name, file)
click to toggle source
# File lib/chef-api/multipart.rb, line 113 def initialize(name, file) @file = file @head = build(name, file) @foot = "\r\n" end
Public Instance Methods
io()
click to toggle source
# File lib/chef-api/multipart.rb, line 119 def io @io ||= MultiIO.new( StringIO.new(@head), @file, StringIO.new(@foot) ) end
size()
click to toggle source
# File lib/chef-api/multipart.rb, line 127 def size @head.bytesize + @file.size + @foot.bytesize end
Private Instance Methods
build(name, file)
click to toggle source
# File lib/chef-api/multipart.rb, line 133 def build(name, file) filename = File.basename(file.path) mime_type = MIME::Types.type_for(filename)[0] || MIME::Types['application/octet-stream'][0] part = %|--#{BOUNDARY}\r\n| part << %|Content-Disposition: form-data; name="#{CGI.escape(name)}"; filename="#{filename}"\r\n| part << %|Content-Length: #{file.size}\r\n| part << %|Content-Type: #{mime_type.simplified}\r\n| part << %|Content-Transfer-Encoding: binary\r\n| part << %|\r\n| part end