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.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(encoding: {}) ⇒ MultipartBodyParser

Returns a new instance of MultipartBodyParser.



47
48
49
# File 'lib/openapi_first/request_body_parsers.rb', line 47

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

Class Method Details

.call(request) ⇒ Object



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

def self.call(request)
  new.call(request)
end

Instance Method Details

#call(request) ⇒ Object



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

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