Sha256: 4d94f6291187f136ff66298859e8465ea15f9d4e830041d06ccc2c7f62ce1411

Contents?: true

Size: 1.12 KB

Versions: 7

Compression:

Stored size: 1.12 KB

Contents

module OasRails
  class RequestBody < OasBase
    attr_accessor :description, :content, :required

    def initialize(description:, content:, required: false)
      super()
      @description = description
      @content = content # Should be an array of media type object
      @required = required
    end

    class << self
      def from_tags(tag:, examples_tags: [])
        if tag.klass.ancestors.include? ActiveRecord::Base
          from_model_class(klass: tag.klass, description: tag.text, required: tag.required, examples_tags:)
        else
          # hash content to schema
          content = { "application/json": MediaType.new(schema: tag.schema, examples: MediaType.tags_to_examples(tags: examples_tags)) }
          new(description: tag.text, content:, required: tag.required)
        end
      end

      def from_model_class(klass:, **kwargs)
        content = { "application/json": MediaType.from_model_class(klass:, examples: MediaType.tags_to_examples(tags: kwargs[:examples_tags] || {})) }
        new(description: kwargs[:description] || klass.to_s, content:, required: kwargs[:required])
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
oas_rails-0.3.0 lib/oas_rails/request_body.rb
oas_rails-0.2.3 lib/oas_rails/request_body.rb
oas_rails-0.2.2 lib/oas_rails/request_body.rb
oas_rails-0.2.1 lib/oas_rails/request_body.rb
oas_rails-0.2.0 lib/oas_rails/request_body.rb
oas_rails-0.1.1 lib/oas_rails/request_body.rb
oas_rails-0.1.0 lib/oas_rails/request_body.rb