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