Module: OpenapiFirst::RequestBodyParsers::MultipartBodyParser

Defined in:
lib/openapi_first/request_body_parsers.rb

Overview

Parses multipart/form-data requests and currently puts the contents of a file upload at the parsed hash values. NOTE: This behavior will probably change in the next major version.

The uploaded file should not be read during request validation.

Class Method Summary collapse

Class Method Details

.call(request) ⇒ Object



43
44
45
46
47
# File 'lib/openapi_first/request_body_parsers.rb', line 43

def self.call(request)
  request.POST.transform_values do |value|
    unpack_value(value)
  end
end

.unpack_value(value) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/openapi_first/request_body_parsers.rb', line 49

def self.unpack_value(value)
  return value.map { unpack_value(_1) } if value.is_a?(Array)
  return value unless value.is_a?(Hash)
  return value[:tempfile]&.read if value.key?(:tempfile)

  value.transform_values do |v|
    unpack_value(v)
  end
end