Class: OpenapiParameters::Parameter

Inherits:
Object
  • Object
show all
Defined in:
lib/openapi_parameters/parameter.rb

Overview

Represents a parameter in an OpenAPI operation.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(definition) ⇒ Parameter

Returns a new instance of Parameter.

Parameters:

  • definition (Hash)

    The parameter definition. A string keyed Hash.



8
9
10
11
12
13
14
# File 'lib/openapi_parameters/parameter.rb', line 8

def initialize(definition)
  @definition = definition
  @name = definition['name']
  @is_deep_object = style == 'deepObject'
  @converter = Converters[schema]
  check_supported!
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



16
17
18
# File 'lib/openapi_parameters/parameter.rb', line 16

def name
  @name
end

Instance Method Details

#allow_reserved?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/openapi_parameters/parameter.rb', line 83

def allow_reserved?
  definition['allowReserved'] == true
end

#array?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/openapi_parameters/parameter.rb', line 52

def array?
  type == 'array'
end

#bracket_array?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/openapi_parameters/parameter.rb', line 59

def bracket_array?
  @bracket_array ||= array? && name.end_with?(EMPTY_BRACKETS)
end

#convert(value) ⇒ Object



19
20
21
# File 'lib/openapi_parameters/parameter.rb', line 19

def convert(value)
  @converter.call(value)
end

#deep_object?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/openapi_parameters/parameter.rb', line 23

def deep_object?
  @is_deep_object
end

#deprecated?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/openapi_parameters/parameter.rb', line 79

def deprecated?
  definition['deprecated'] == true
end

#explode?Boolean

Returns:

  • (Boolean)


87
88
89
90
91
92
# File 'lib/openapi_parameters/parameter.rb', line 87

def explode?
  return definition['explode'] if definition.key?('explode')
  return true if style == 'form'

  false
end

#locationString Also known as: in

Returns The location of the parameter in the request, “path”, “query”, “header” or “cookie”.

Returns:

  • (String)

    The location of the parameter in the request, “path”, “query”, “header” or “cookie”.



28
29
30
# File 'lib/openapi_parameters/parameter.rb', line 28

def location
  definition['in']
end

#media_typeObject



40
41
42
# File 'lib/openapi_parameters/parameter.rb', line 40

def media_type
  definition['content']&.keys&.first
end

#object?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/openapi_parameters/parameter.rb', line 63

def object?
  type == 'object' || style == 'deepObject' || schema&.key?('properties')
end

#primitive?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/openapi_parameters/parameter.rb', line 48

def primitive?
  type != 'object' && type != 'array'
end

#required?Boolean

Returns:

  • (Boolean)


73
74
75
76
77
# File 'lib/openapi_parameters/parameter.rb', line 73

def required?
  return true if location == 'path'

  definition['required'] == true
end

#schemaObject



34
35
36
37
38
# File 'lib/openapi_parameters/parameter.rb', line 34

def schema
  return definition.dig('content', media_type, 'schema') if media_type

  definition['schema']
end

#styleObject



67
68
69
70
71
# File 'lib/openapi_parameters/parameter.rb', line 67

def style
  return definition['style'] if definition['style']

  DEFAULT_STYLE.fetch(location)
end

#typeObject



44
45
46
# File 'lib/openapi_parameters/parameter.rb', line 44

def type
  schema && schema['type']
end