lib/rack/multipart.rb in rack-3.0.10 vs lib/rack/multipart.rb in rack-3.1.0

- old
+ new

@@ -4,19 +4,52 @@ require_relative 'utils' require_relative 'multipart/parser' require_relative 'multipart/generator' +require_relative 'bad_request' + module Rack # A multipart form data parser, adapted from IOWA. # # Usually, Rack::Request#POST takes care of calling this. module Multipart MULTIPART_BOUNDARY = "AaB03x" + class MissingInputError < StandardError + include BadRequest + end + + # Accumulator for multipart form data, conforming to the QueryParser API. + # In future, the Parser could return the pair list directly, but that would + # change its API. + class ParamList # :nodoc: + def self.make_params + new + end + + def self.normalize_params(params, key, value) + params << [key, value] + end + + def initialize + @pairs = [] + end + + def <<(pair) + @pairs << pair + end + + def to_params_hash + @pairs + end + end + class << self def parse_multipart(env, params = Rack::Utils.default_query_parser) - io = env[RACK_INPUT] + unless io = env[RACK_INPUT] + raise MissingInputError, "Missing input stream!" + end if content_length = env['CONTENT_LENGTH'] content_length = content_length.to_i end