class Swaggard::Swagger::Response

Constants

PRIMITIVE_TYPES

Attributes

description[W]
status_code[W]

Public Class Methods

new(operation_name) click to toggle source
# File lib/swaggard/swagger/response.rb, line 11
def initialize(operation_name)
  @operation_name = operation_name
  @response_model = ResponseModel.new
  @headers = []
end

Public Instance Methods

add_example(value) click to toggle source
# File lib/swaggard/swagger/response.rb, line 38
def add_example(value)
  @example = value
end
add_header(value) click to toggle source
# File lib/swaggard/swagger/response.rb, line 42
def add_header(value)
  @headers << ResponseHeader.new(value)
end
definition() click to toggle source
# File lib/swaggard/swagger/response.rb, line 17
def definition
  return unless @response_root.present?

  @definition ||= Definition.new("#{@operation_name}_response").tap do |definition|
    definition.add_property(@response_model)
  end
end
description() click to toggle source
# File lib/swaggard/swagger/response.rb, line 46
def description
  @description || Swaggard.configuration.default_response_description
end
example_to_doc() click to toggle source
# File lib/swaggard/swagger/response.rb, line 66
def example_to_doc
  Swaggard.configuration.api_formats.inject({}) do |examples, format|
    examples.merge!("application/#{format}" => { '$ref' => @example })

    examples
  end
end
response_class=(value) click to toggle source
# File lib/swaggard/swagger/response.rb, line 29
def response_class=(value)
  @response_model.parse(value)
end
response_root=(root) click to toggle source
# File lib/swaggard/swagger/response.rb, line 33
def response_root=(root)
  @response_root = root
  @response_model.id = root
end
status_code() click to toggle source
# File lib/swaggard/swagger/response.rb, line 25
def status_code
  @status_code || Swaggard.configuration.default_response_status_code
end
to_doc() click to toggle source
# File lib/swaggard/swagger/response.rb, line 50
def to_doc
  { 'description' => description }.tap do |doc|
    schema = if @response_root.present?
               { '$ref' => "#/definitions/#{definition.id}" }
             elsif @response_model.response_class.present?
               @response_model.to_doc
             end

    doc.merge!('schema' => schema) if schema
    doc.merge!('examples' => example_to_doc) if @example
    if @headers.any?
      doc['headers'] = Hash[@headers.map { |header| [header.name, header.to_doc] }]
    end
  end
end