Class: UploadIO

### Home Classes Methods

### In Files

- lib/composite_io.rb

### Parent

Object

### Methods

- ::convert!
- ::new
- #method_missing
- #respond_to?

### Class/Module Index

Quicksearch

- Net
- Net::HTTP
- Net::HTTP::Post
- Net::HTTP::Post::Multipart
- Net::HTTP::Put
- Net::HTTP::Put::Multipart
- Parts
- Parts::EpiloguePart
- Parts::FilePart
- Parts::ParamPart
- CompositeReadIO
- MultipartPost
- Multipartable
- UploadIO

No matching classes.

# UploadIO

Convenience methods for dealing with files and IO that are to be uploaded.

### Attributes

content_type[R]

Create an upload IO suitable for including in the params hash of a Net::HTTP::Post::Multipart.

Can take two forms. The first accepts a filename and content type, and opens the file for reading (to be closed by finalizer).

The second accepts an already-open IO, but also requires a third argument, the filename from which it was opened (particularly useful/recommended if uploading directly from a form in a framework, which often save the file to an arbitrarily named RackMultipart file in /tmp).

Usage:

    UploadIO.new("file.txt", "text/plain")
    UploadIO.new(file_io, "text/plain", "file.txt")

io[R]

Create an upload IO suitable for including in the params hash of a Net::HTTP::Post::Multipart.

Can take two forms. The first accepts a filename and content type, and opens the file for reading (to be closed by finalizer).

The second accepts an already-open IO, but also requires a third argument, the filename from which it was opened (particularly useful/recommended if uploading directly from a form in a framework, which often save the file to an arbitrarily named RackMultipart file in /tmp).

Usage:

    UploadIO.new("file.txt", "text/plain")
    UploadIO.new(file_io, "text/plain", "file.txt")

local_path[R]

Create an upload IO suitable for including in the params hash of a Net::HTTP::Post::Multipart.

Can take two forms. The first accepts a filename and content type, and opens the file for reading (to be closed by finalizer).

The second accepts an already-open IO, but also requires a third argument, the filename from which it was opened (particularly useful/recommended if uploading directly from a form in a framework, which often save the file to an arbitrarily named RackMultipart file in /tmp).

Usage:

    UploadIO.new("file.txt", "text/plain")
    UploadIO.new(file_io, "text/plain", "file.txt")

opts[R]

Create an upload IO suitable for including in the params hash of a Net::HTTP::Post::Multipart.

Can take two forms. The first accepts a filename and content type, and opens the file for reading (to be closed by finalizer).

The second accepts an already-open IO, but also requires a third argument, the filename from which it was opened (particularly useful/recommended if uploading directly from a form in a framework, which often save the file to an arbitrarily named RackMultipart file in /tmp).

Usage:

    UploadIO.new("file.txt", "text/plain")
    UploadIO.new(file_io, "text/plain", "file.txt")

original_filename[R]

Create an upload IO suitable for including in the params hash of a Net::HTTP::Post::Multipart.

Can take two forms. The first accepts a filename and content type, and opens the file for reading (to be closed by finalizer).

The second accepts an already-open IO, but also requires a third argument, the filename from which it was opened (particularly useful/recommended if uploading directly from a form in a framework, which often save the file to an arbitrarily named RackMultipart file in /tmp).

Usage:

    UploadIO.new("file.txt", "text/plain")
    UploadIO.new(file_io, "text/plain", "file.txt")

### Public Class Methods

convert!(io, content_type, original_filename, local_path) click to toggle source

    # File lib/composite_io.rb, line 97
    def self.convert!(io, content_type, original_filename, local_path)
      raise ArgumentError, "convert! has been removed. You must now wrap IOs using:\nUploadIO.new(filename_or_io, content_type, filename=nil)\nPlease update your code."
    end

new(filename_or_io, content_type, filename = nil, opts = {}) click to toggle source

    # File lib/composite_io.rb, line 77
    def initialize(filename_or_io, content_type, filename = nil, opts = {})
      io = filename_or_io
      local_path = ""
      if io.respond_to? :read
        # in Ruby 1.9.2, StringIOs no longer respond to path
        # (since they respond to :length, so we don't need their local path, see parts.rb:41)
        local_path = filename_or_io.respond_to?(:path) ? filename_or_io.path : "local.path"
      else
        io = File.open(filename_or_io)
        local_path = filename_or_io
      end
      filename ||= local_path

      @content_type = content_type
      @original_filename = File.basename(filename)
      @local_path = local_path
      @io = io
      @opts = opts
    end

### Public Instance Methods

method_missing(*args) click to toggle source

    # File lib/composite_io.rb, line 101
    def method_missing(*args)
      @io.send(*args)
    end

respond_to?(meth, include_all = false) click to toggle source

    # File lib/composite_io.rb, line 105
    def respond_to?(meth, include_all = false)
      @io.respond_to?(meth, include_all) || super(meth, include_all)
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.