Sha256: 04c281b991a137e8d113323513724f027c0470e5754fd18a95b75be2f92b44a2

Contents?: true

Size: 1.36 KB

Versions: 3

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true
module WeakSwaggerParameters
  module Definitions
    class Body < ParamContainer
      def initialize(&block)
        @required_fields = []
        super
      end

      def string(name, description, options = {})
        @required_fields << name if options.try(:[], :required)
        @child_definitions << WeakSwaggerParameters::Definitions::BodyParam.new(:string, name, description, options)
      end

      def boolean(name, description, options = {})
        @required_fields << name if options.try(:[], :required)
        @child_definitions << WeakSwaggerParameters::Definitions::BodyParam.new(:boolean, name, description, options)
      end

      def integer(name, description, options = {})
        @required_fields << name if options.try(:[], :required)
        @child_definitions << WeakSwaggerParameters::Definitions::BodyParam.new(:integer, name, description, options)
      end

      def apply_docs(parent_node)
        param_definitions = @child_definitions
        required_fields = @required_fields

        parent_node.instance_eval do
          parameter name: :body, in: :body, required: true do
            schema required: required_fields do
              schema_node = self
              param_definitions.each { |definition| definition.apply_docs(schema_node) }
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
weak_swagger_parameters-0.2.0 lib/weak_swagger_parameters/definitions/body.rb
weak_swagger_parameters-0.1.1 lib/weak_swagger_parameters/definitions/body.rb
weak_swagger_parameters-0.0.1 lib/weak_swagger_parameters/definitions/body.rb