Sha256: f7b6222a6fdf64d1871845e545b421cfeb6cf9e03c33d0978f844d826e5156aa

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 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::Property.new(:string, name, description, options)
      end

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

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

      def apply_docs(parent_node)
        param_definitions = @child_definitions
        schema_options = {}
        schema_options[:required] = @required_fields unless @required_fields.empty?

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
weak_swagger_parameters-0.3.0 lib/weak_swagger_parameters/definitions/body.rb