123456789_123456789_123456789_123456789_123456789_

Class: WEBrick::HTTPUtils::FormData

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, String
Instance Chain:
self, String
Inherits: String
  • Object
Defined in: lib/webrick/httputils.rb

Overview

Stores multipart form data. FormData objects are created when parse_form_data is called.

Constant Summary

Class Method Summary

Instance Attribute Summary

Instance Method Summary

  • #<<(str)

    Adds str to this FormData which may be the body, a header or a header entry.

  • #[](*key)

    Retrieves the header at the first entry in key

  • #append_data(data)

    Adds data at the end of the chain of entries.

  • #each_data

    Yields each entry in this FormData.

  • #list (also: #to_ary)

    Returns all the FormData as an Array.

  • #to_ary

    A FormData will behave like an Array.

  • #to_s

    This FormData’s body.

Constructor Details

.new(*args) ⇒ FormData

Creates a new FormData object.

args is an Array of form data entries. One FormData will be created for each entry.

This is called by WEBrick::HTTPUtils.parse_form_data for you

[ GitHub ]

  
# File 'lib/webrick/httputils.rb', line 268

def initialize(*args)
  @name = @filename = @next_data = nil
  if args.empty?
    @raw_header = []
    @header = nil
    super("")
  else
    @raw_header = EmptyRawHeader
    @header = EmptyHeader
    super(args.shift)
    unless args.empty?
      @next_data = self.class.new(*args)
    end
  end
end

Instance Attribute Details

#filename (rw)

The filename of the form data part

[ GitHub ]

  
# File 'lib/webrick/httputils.rb', line 255

attr_accessor :filename

#name (rw)

The name of the form data part

[ GitHub ]

  
# File 'lib/webrick/httputils.rb', line 250

attr_accessor :name

#next_data (rw, protected)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/webrick/httputils.rb', line 257

attr_accessor :next_data # :nodoc:

Instance Method Details

#<<(str)

Adds str to this FormData which may be the body, a header or a header entry.

This is called by WEBrick::HTTPUtils.parse_form_data for you

[ GitHub ]

  
# File 'lib/webrick/httputils.rb', line 301

def <<(str)
  if @header
    super
  elsif str == CRLF
    @header = HTTPUtils::parse_header(@raw_header.join)
    if cd = self['content-disposition']
      if /\s+name="(.*?)"/ =~ cd then @name = $1 end
      if /\s+filename="(.*?)"/ =~ cd then @filename = $1 end
    end
  else
    @raw_header << str
  end
  self
end

#[](*key)

Retrieves the header at the first entry in key

[ GitHub ]

  
# File 'lib/webrick/httputils.rb', line 287

def [](*key)
  begin
    @header[key[0].downcase].join(", ")
  rescue StandardError, NameError
    super
  end
end

#append_data(data)

Adds data at the end of the chain of entries

This is called by WEBrick::HTTPUtils.parse_form_data for you.

[ GitHub ]

  
# File 'lib/webrick/httputils.rb', line 321

def append_data(data)
  tmp = self
  while tmp
    unless tmp.next_data
      tmp.next_data = data
      break
    end
    tmp = tmp.next_data
  end
  self
end

#each_data

Yields each entry in this FormData

[ GitHub ]

  
# File 'lib/webrick/httputils.rb', line 336

def each_data
  tmp = self
  while tmp
    next_data = tmp.next_data
    yield(tmp)
    tmp = next_data
  end
end

#list Also known as: #to_ary

Returns all the FormData as an Array

[ GitHub ]

  
# File 'lib/webrick/httputils.rb', line 348

def list
  ret = []
  each_data{|data|
    ret << data.to_s
  }
  ret
end

#to_ary

A FormData will behave like an Array

[ GitHub ]

  
# File 'lib/webrick/httputils.rb', line 359

alias :to_ary :list

#to_s

This FormData’s body

[ GitHub ]

  
# File 'lib/webrick/httputils.rb', line 364

def to_s
  String.new(self)
end