Sha256: ca57b34c398645fef0dfc8873cec7ffedba30d33543a28d23c4d1bee59d136ef

Contents?: true

Size: 1.41 KB

Versions: 12

Compression:

Stored size: 1.41 KB

Contents

require 'oas_objs/media_type_obj'
require 'oas_objs/helpers'

module OpenApi
  module DSL
    # https://swagger.io/docs/specification/describing-request-body/
    # https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/versions/3.0.0.md#requestBodyObject
    class RequestBodyObj < Hash
      include Helpers

      attr_accessor :processed, :media_types
      def initialize(required, desc)
        self.media_types = [ ]
        self.processed   = { required: required.match?('req'), description: desc }
      end

      def add_or_fusion(media_type, hash)
        media_types << MediaTypeObj.new(media_type, hash)
        self
      end

      def process
        assign(media_types.map(&:process).reduce({ }, &fusion)).to_processed 'content'
        processed
      end
    end
  end
end


__END__

Request Body Examples
A request body with a referenced model definition.

{
  "description": "user to add to the system",
  "content": {
    "multipart/form-data": {
      "schema": {
        "$ref": "#/components/schemas/User"
      },
      "examples": {
          "user" : {
            "summary": "User Example",
            "externalValue": "http://foo.bar/examples/user-example.json"
          }
        }
    },
    "*/*": {
      "examples": {
        "user" : {
            "summary": "User example in other format",
            "externalValue": "http://foo.bar/examples/user-example.whatever"
        }
      }
    }
  }
}

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
zero-rails_openapi-1.6.1 lib/oas_objs/request_body_obj.rb
zero-rails_openapi-1.6.0 lib/oas_objs/request_body_obj.rb
zero-rails_openapi-1.5.9 lib/oas_objs/request_body_obj.rb
zero-rails_openapi-1.5.8 lib/oas_objs/request_body_obj.rb
zero-rails_openapi-1.5.7 lib/oas_objs/request_body_obj.rb
zero-rails_openapi-1.5.6 lib/oas_objs/request_body_obj.rb
zero-rails_openapi-1.5.5 lib/oas_objs/request_body_obj.rb
zero-rails_openapi-1.5.4 lib/oas_objs/request_body_obj.rb
zero-rails_openapi-1.5.3 lib/oas_objs/request_body_obj.rb
zero-rails_openapi-1.5.2 lib/oas_objs/request_body_obj.rb
zero-rails_openapi-1.5.1 lib/oas_objs/request_body_obj.rb
zero-rails_openapi-1.4.3 lib/oas_objs/request_body_obj.rb