Class: OpenapiFirst::RequestBodyParsers::MultipartBodyParser

Inherits:
Object
  • Object
show all
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.

Honors the OpenAPI ‘encoding` map: when a top-level field has `contentType: application/json` (or any */json), the field’s raw value is JSON-parsed before schema validation.

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ MultipartBodyParser

Returns a new instance of MultipartBodyParser.



50
51
52
# File 'lib/openapi_first/request_body_parsers.rb', line 50

def initialize(options)
  @encoding = options[:encoding] || {}
end

Instance Method Details

#call(request) ⇒ Object



54
55
56
57
58
59
60
61
62
63
# File 'lib/openapi_first/request_body_parsers.rb', line 54

def call(request)
  result = {}
  request.POST.each do |name, value|
    decoded = decode_field(name, value)
    return decoded if decoded.is_a?(Failure)

    result[name] = decoded
  end
  result
end