Class: UploadIO
Overview
Convenience methods for dealing with files and IO that are to be uploaded.
Instance Attribute Summary collapse
- 
  
    
      #content_type  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Create an upload IO suitable for including in the params hash of a Net::HTTP::Post::Multipart.
 - 
  
    
      #io  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Create an upload IO suitable for including in the params hash of a Net::HTTP::Post::Multipart.
 - 
  
    
      #local_path  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Create an upload IO suitable for including in the params hash of a Net::HTTP::Post::Multipart.
 - 
  
    
      #opts  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Create an upload IO suitable for including in the params hash of a Net::HTTP::Post::Multipart.
 - 
  
    
      #original_filename  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Create an upload IO suitable for including in the params hash of a Net::HTTP::Post::Multipart.
 
Class Method Summary collapse
Instance Method Summary collapse
- 
  
    
      #initialize(filename_or_io, content_type, filename = nil, opts = {})  ⇒ UploadIO 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of UploadIO.
 - #method_missing(*args) ⇒ Object
 - #respond_to?(meth, include_all = false) ⇒ Boolean
 
Constructor Details
#initialize(filename_or_io, content_type, filename = nil, opts = {}) ⇒ UploadIO
Returns a new instance of UploadIO.
      77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95  | 
    
      # File 'lib/puppet/feature/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  | 
  
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(*args) ⇒ Object
      101 102 103  | 
    
      # File 'lib/puppet/feature/composite_io.rb', line 101 def method_missing(*args) @io.send(*args) end  | 
  
Instance Attribute Details
#content_type ⇒ Object (readonly)
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")
  
      75 76 77  | 
    
      # File 'lib/puppet/feature/composite_io.rb', line 75 def content_type @content_type end  | 
  
#io ⇒ Object (readonly)
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")
  
      75 76 77  | 
    
      # File 'lib/puppet/feature/composite_io.rb', line 75 def io @io end  | 
  
#local_path ⇒ Object (readonly)
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")
  
      75 76 77  | 
    
      # File 'lib/puppet/feature/composite_io.rb', line 75 def local_path @local_path end  | 
  
#opts ⇒ Object (readonly)
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")
  
      75 76 77  | 
    
      # File 'lib/puppet/feature/composite_io.rb', line 75 def opts @opts end  | 
  
#original_filename ⇒ Object (readonly)
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")
  
      75 76 77  | 
    
      # File 'lib/puppet/feature/composite_io.rb', line 75 def original_filename @original_filename end  | 
  
Class Method Details
.convert!(io, content_type, original_filename, local_path) ⇒ Object
      97 98 99  | 
    
      # File 'lib/puppet/feature/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  | 
  
Instance Method Details
#respond_to?(meth, include_all = false) ⇒ Boolean
      105 106 107  | 
    
      # File 'lib/puppet/feature/composite_io.rb', line 105 def respond_to?(meth, include_all = false) @io.respond_to?(meth, include_all) || super(meth, include_all) end  |