Class: Gitlab::GrapeOpenapi::Converters::TypeResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/grape_openapi/converters/type_resolver.rb

Constant Summary collapse

TYPE_MAPPINGS =
{
  'API::Validations::Types::WorkhorseFile' => 'string',
  'Array' => 'array',
  'BigDecimal' => 'number',
  'Boolean' => 'boolean',
  'date' => 'string',
  'Date' => 'string',
  'date-time' => 'string',
  'dateTime' => 'string',
  'DateTime' => 'string',
  'FalseClass' => 'boolean',
  'Grape::API::Boolean' => 'boolean',
  'Gitlab::Color' => 'string',
  :int => 'integer',
  'int' => 'integer',
  Integer => 'integer',
  'Integer' => 'integer',
  'File' => 'string',
  Float => 'number',
  'Float' => 'number',
  :hash => 'object',
  'hash' => 'object',
  'Hash' => 'object',
  'JSON' => 'object',
  'Numeric' => 'number',
  String => 'string',
  'String' => 'string',
  'symbol' => 'string',
  'Symbol' => 'string',
  'text' => 'string',
  'Time' => 'string',
  'TrueClass' => 'boolean'
}.freeze
FORMAT_MAPPINGS =
{
  'API::Validations::Types::WorkhorseFile' => 'binary',
  'date' => 'date',
  'Date' => 'date',
  'date-time' => 'date-time',
  'dateTime' => 'date-time',
  'DateTime' => 'date-time',
  'File' => 'binary',
  'Time' => 'date-time'
}.freeze

Class Method Summary collapse

Class Method Details

.resolve_format(format, type) ⇒ Object



60
61
62
# File 'lib/gitlab/grape_openapi/converters/type_resolver.rb', line 60

def self.resolve_format(format, type)
  format || FORMAT_MAPPINGS[type]
end

.resolve_type(type) ⇒ Object



52
53
54
55
56
57
58
# File 'lib/gitlab/grape_openapi/converters/type_resolver.rb', line 52

def self.resolve_type(type)
  return TYPE_MAPPINGS[type] if TYPE_MAPPINGS[type]
  return type unless type.is_a?(String)
  return 'object' if type.delete_prefix('::').start_with?('API::')

  type
end

.resolve_union_member(type) ⇒ Object



64
65
66
67
68
69
70
71
# File 'lib/gitlab/grape_openapi/converters/type_resolver.rb', line 64

def self.resolve_union_member(type)
  if type.start_with?('[') && type.end_with?(']')
    item_type = type[1..-2]
    { type: 'array', items: { type: resolve_type(item_type) || 'string' } }
  else
    { type: resolve_type(type) || 'string' }
  end
end