Sha256: b6ae5e1a6c59f1da614adf5d49c32e6a033c7ddb704e9ead7bb8e9ef5f7a9139

Contents?: true

Size: 1.6 KB

Versions: 8

Compression:

Stored size: 1.6 KB

Contents

require_relative 'base'
require_relative '../type'

module Swaggard
  module Swagger
    module Parameters
      class Body < Base

        attr_reader :definition

        def initialize(operation_name)
          @in           = 'body'
          @name         = 'body'
          @description  = ''
          @definition   = Definition.new("#{operation_name}_body")
        end

        def add_property(string)
          property = Property.new(string)
          @definition.add_property(property)
        end

        def to_doc
          doc = super

          doc.delete('type')

          doc['required'] = false
          doc['schema'] = { '$ref' => "#/definitions/#{@definition.id}" }

          doc
        end

        private


        class Property

          attr_reader :id

          def initialize(string)
            parse(string)
          end

          def to_doc
            result = @type.to_doc
            result['description'] = @description if @description
            result
          end

          # Example: [Array]     status            Filter by status. (e.g. status[]=1&status[]=2&status[]=3)
          # Example: [Array]     status(required)  Filter by status. (e.g. status[]=1&status[]=2&status[]=3)
          # Example: [Integer]   media[media_type_id]                          ID of the desired media type.
          def parse(string)
            data_type, name, description = string.split

            data_type.gsub!('[', '').gsub!(']', '')

            @id = name
            @description = description
            @type = Type.new([data_type])
          end

        end

      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
swaggard-0.5.1 lib/swaggard/swagger/parameters/body.rb
swaggard-0.5.0 lib/swaggard/swagger/parameters/body.rb
swaggard-0.4.0 lib/swaggard/swagger/parameters/body.rb
swaggard-0.3.0 lib/swaggard/swagger/parameters/body.rb
swaggard-0.2.1 lib/swaggard/swagger/parameters/body.rb
swaggard-0.2.0 lib/swaggard/swagger/parameters/body.rb
swaggard-0.1.1 lib/swaggard/swagger/parameters/body.rb
swaggard-0.1.0 lib/swaggard/swagger/parameters/body.rb