Class: Sinatra::SwaggerExposer::Configuration::SwaggerEndpointResponse

Inherits:
Object
  • Object
show all
Includes:
SwaggerConfigurationUtilities
Defined in:
lib/sinatra/swagger-exposer/configuration/swagger-endpoint-response.rb

Constant Summary collapse

RESPONSE_PRIMITIVES_FILES =
PRIMITIVE_TYPES + [TYPE_FILE]

Constants included from SwaggerParameterHelper

SwaggerParameterHelper::HOW_TO_PASS, SwaggerParameterHelper::HOW_TO_PASS_BODY, SwaggerParameterHelper::HOW_TO_PASS_HEADER, SwaggerParameterHelper::HOW_TO_PASS_PATH, SwaggerParameterHelper::HOW_TO_PASS_QUERY, SwaggerParameterHelper::PARAMS_DEFAULT, SwaggerParameterHelper::PARAMS_EXAMPLE, SwaggerParameterHelper::PARAMS_EXCLUSIVE_MAXIMUM, SwaggerParameterHelper::PARAMS_EXCLUSIVE_MINIMUM, SwaggerParameterHelper::PARAMS_FORMAT, SwaggerParameterHelper::PARAMS_LIST, SwaggerParameterHelper::PARAMS_MAXIMUM, SwaggerParameterHelper::PARAMS_MAX_LENGTH, SwaggerParameterHelper::PARAMS_MINIMUM, SwaggerParameterHelper::PARAMS_MIN_LENGTH, SwaggerParameterHelper::PRIMITIVE_TYPES, SwaggerParameterHelper::PRIMITIVE_TYPES_FOR_NON_BODY, SwaggerParameterHelper::TYPE_ARRAY, SwaggerParameterHelper::TYPE_BOOLEAN, SwaggerParameterHelper::TYPE_BYTE, SwaggerParameterHelper::TYPE_DATE, SwaggerParameterHelper::TYPE_DATE_TIME, SwaggerParameterHelper::TYPE_DOUBLE, SwaggerParameterHelper::TYPE_FILE, SwaggerParameterHelper::TYPE_FLOAT, SwaggerParameterHelper::TYPE_INTEGER, SwaggerParameterHelper::TYPE_LONG, SwaggerParameterHelper::TYPE_NUMBER, SwaggerParameterHelper::TYPE_PASSWORD, SwaggerParameterHelper::TYPE_STRING

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from SwaggerConfigurationUtilities

#check_name, #get_type, #hash_to_swagger, #list_or_none, #ref_to_type, #type_to_s, #white_list_params

Constructor Details

#initialize(type, description, known_types, headers, known_headers) ⇒ SwaggerEndpointResponse

Returns a new instance of SwaggerEndpointResponse.

Parameters:



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/sinatra/swagger-exposer/configuration/swagger-endpoint-response.rb', line 24

def initialize(type, description, known_types, headers, known_headers)
  if type
    get_type(type, known_types + RESPONSE_PRIMITIVES_FILES)
  end

  if description
    @description = description
  end

  @headers = {}
  headers.each do |header_name|
    header_name = header_name.to_s
    if @headers.key? header_name
      raise SwaggerInvalidException.new("Duplicated header_name [#{header_name}]")
    end
    unless known_headers.key? header_name
      raise SwaggerInvalidException.new("Unknown header_name [#{header_name}]")
    end
    @headers[header_name] = known_headers[header_name]
  end

end

Instance Attribute Details

#itemsObject (readonly)

Returns the value of attribute items.



15
16
17
# File 'lib/sinatra/swagger-exposer/configuration/swagger-endpoint-response.rb', line 15

def items
  @items
end

#typeObject (readonly)

Returns the value of attribute type.



15
16
17
# File 'lib/sinatra/swagger-exposer/configuration/swagger-endpoint-response.rb', line 15

def type
  @type
end

Instance Method Details

#to_sObject



85
86
87
88
89
90
91
# File 'lib/sinatra/swagger-exposer/configuration/swagger-endpoint-response.rb', line 85

def to_s
  {
    :type => @type,
    :items => @items,
    :description => @description,
  }.to_json
end

#to_swaggerObject



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/sinatra/swagger-exposer/configuration/swagger-endpoint-response.rb', line 47

def to_swagger
  result = {}

  if @type
    if @type == TYPE_ARRAY
      schema = {:type => TYPE_ARRAY}
      if @items
        if RESPONSE_PRIMITIVES_FILES.include? @items
          schema[:items] = {:type => @items}
        else
          schema[:items] = ref_to_type(@items)
        end
      end
      result[:schema] = schema
    else
      if RESPONSE_PRIMITIVES_FILES.include? @type
        result[:schema] = {:type => @type}
      else
        result[:schema] = ref_to_type(@type)
      end
    end
  end

  if @description
    result[:description] = @description
  end

  unless @headers.empty?
    swagged_headers = {}
    @headers.each_pair do |name, value|
      swagged_headers[name] = value.to_swagger
    end
    result[:headers] = swagged_headers
  end

  result
end