Module: Sinatra::SwaggerExposer::Configuration::SwaggerConfigurationUtilities

Includes:
SwaggerParameterHelper
Included in:
SwaggerEndpoint, SwaggerEndpointParameter, SwaggerEndpointResponse, SwaggerHashLike, SwaggerInfo, SwaggerResponseHeader, SwaggerType, SwaggerTypeProperty
Defined in:
lib/sinatra/swagger-exposer/configuration/swagger-configuration-utilities.rb

Constant Summary

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 Method Summary collapse

Instance Method Details

#check_name(name) ⇒ NilClass

Validate if a value is suitable for a name

Parameters:

  • name (String)

    the name

Returns:

  • (NilClass)


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

def check_name(name)
  unless name.is_a?(String) || name.is_a?(Symbol)
    raise SwaggerInvalidException.new("Name [#{name}] should be a string or a symbol")
  end
  name = name.to_s
  if name.empty?
    raise SwaggerInvalidException.new('Name should not be empty')
  end
end

#get_type(type, possible_values) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/sinatra/swagger-exposer/configuration/swagger-configuration-utilities.rb', line 40

def get_type(type, possible_values)
  @type = type
  if type.nil?
    raise SwaggerInvalidException.new('Type is nil')
  elsif type.is_a?(String) || @type.is_a?(Class)
    @type = type_to_s(@type)
    check_type(@type, possible_values)
  elsif @type.is_a? Array
    @items = type_to_s(get_array_type(@type))
    check_type(@items, possible_values)
    @type = TYPE_ARRAY
  else
    raise SwaggerInvalidException.new("Type [#{@type}] of has an unknown type, should be a class, a string or an array")
  end
end

#hash_to_swagger(hash) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/sinatra/swagger-exposer/configuration/swagger-configuration-utilities.rb', line 18

def hash_to_swagger(hash)
  result = {}
  hash.each_pair do |key, value|
    result[key] = value.to_swagger
  end
  result
end

#list_or_none(list, name) ⇒ Object



73
74
75
76
77
78
79
# File 'lib/sinatra/swagger-exposer/configuration/swagger-configuration-utilities.rb', line 73

def list_or_none(list, name)
  if list.empty?
    ", no available #{name}"
  else
    ", possible #{name} are #{list.join(', ')}"
  end
end

#ref_to_type(type) ⇒ Object



14
15
16
# File 'lib/sinatra/swagger-exposer/configuration/swagger-configuration-utilities.rb', line 14

def ref_to_type(type)
  {'$ref' => "#/definitions/#{type}"}
end

#type_to_s(value) ⇒ String

Transform a type into a String

Returns:

  • (String)


28
29
30
31
32
33
34
35
36
37
38
# File 'lib/sinatra/swagger-exposer/configuration/swagger-configuration-utilities.rb', line 28

def type_to_s(value)
  if [TrueClass, FalseClass].include? value
    TYPE_BOOLEAN
  elsif value == DateTime
    TYPE_DATE_TIME
  elsif value.is_a? Class
    value.to_s.downcase
  else
    value
  end
end

#white_list_params(params, allowed_values, ignored_values = []) ⇒ Hash

Validate if a parameter is in a list of available values

Parameters:

  • params (Hash)

    the parameters

  • allowed_values (Enumerable, #include?)

    the allowed values

  • ignored_values (Enumerable, #include?) (defaults to: [])

    values to ignore

Returns:

  • (Hash)

    the filtered hash



61
62
63
64
65
66
67
68
69
70
71
# File 'lib/sinatra/swagger-exposer/configuration/swagger-configuration-utilities.rb', line 61

def white_list_params(params, allowed_values, ignored_values = [])
  result = {}
  params.each_pair do |key, value|
    if allowed_values.include? key
      result[key] = value
    elsif !ignored_values.include?(key)
      raise SwaggerInvalidException.new("Unknown property [#{key}] with value [#{value}]#{list_or_none(allowed_values, 'properties')}")
    end
  end
  result
end