Class: OpenapiFirst::Definition::Operation

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/openapi_first/definition/operation.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, request_method, path_item_object, openapi_version:) ⇒ Operation

Returns a new instance of Operation.



25
26
27
28
29
30
31
# File 'lib/openapi_first/definition/operation.rb', line 25

def initialize(path, request_method, path_item_object, openapi_version:)
  @path = path
  @method = request_method
  @path_item_object = path_item_object
  @openapi_version = openapi_version
  @operation_object = @path_item_object[request_method]
end

Instance Attribute Details

#methodObject (readonly)

Returns the value of attribute method.



23
24
25
# File 'lib/openapi_first/definition/operation.rb', line 23

def method
  @method
end

#openapi_versionObject (readonly)

Returns the value of attribute openapi_version.



23
24
25
# File 'lib/openapi_first/definition/operation.rb', line 23

def openapi_version
  @openapi_version
end

#pathObject (readonly)

Returns the value of attribute path.



23
24
25
# File 'lib/openapi_first/definition/operation.rb', line 23

def path
  @path
end

Instance Method Details



84
85
86
# File 'lib/openapi_first/definition/operation.rb', line 84

def cookie_parameters
  @cookie_parameters ||= build_parameters(all_parameters.filter { |p| p['in'] == 'cookie' }, CookieParameters)
end

#header_parametersObject



80
81
82
# File 'lib/openapi_first/definition/operation.rb', line 80

def header_parameters
  @header_parameters ||= build_parameters(find_header_parameters, HeaderParameters)
end

#nameObject



65
66
67
# File 'lib/openapi_first/definition/operation.rb', line 65

def name
  @name ||= "#{method.upcase} #{path} (#{operation_id})"
end

#operation_idObject



33
34
35
# File 'lib/openapi_first/definition/operation.rb', line 33

def operation_id
  operation_object['operationId']
end

#path_parametersObject



73
74
75
# File 'lib/openapi_first/definition/operation.rb', line 73

def path_parameters
  @path_parameters ||= build_parameters(all_parameters.filter { |p| p['in'] == 'path' }, PathParameters)
end

#query_parametersObject



69
70
71
# File 'lib/openapi_first/definition/operation.rb', line 69

def query_parameters
  @query_parameters ||= build_parameters(all_parameters.filter { |p| p['in'] == 'query' }, QueryParameters)
end

#read?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/openapi_first/definition/operation.rb', line 37

def read?
  !write?
end

#request_bodyObject



45
46
47
# File 'lib/openapi_first/definition/operation.rb', line 45

def request_body
  @request_body ||= RequestBody.new(operation_object['requestBody'], self) if operation_object['requestBody']
end

#response_status_defined?(status) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/openapi_first/definition/operation.rb', line 49

def response_status_defined?(status)
  responses.status_defined?(status)
end

#schema_for(content_type) ⇒ Object



55
56
57
58
59
60
61
62
63
# File 'lib/openapi_first/definition/operation.rb', line 55

def schema_for(content_type)
  content = @request_body_object['content']
  return unless content&.any?

  content_schemas&.fetch(content_type) do
    type = content_type.split(';')[0]
    content_schemas[type] || content_schemas["#{type.split('/')[0]}/*"] || content_schemas['*/*']
  end
end

#write?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/openapi_first/definition/operation.rb', line 41

def write?
  WRITE_METHODS.include?(method)
end