Class: OpenapiFirst::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

#all_parametersObject



80
81
82
83
84
85
86
87
# File 'lib/openapi_first/definition/operation.rb', line 80

def all_parameters
  @all_parameters ||= begin
    parameters = @path_item_object['parameters']&.dup || []
    parameters_on_operation = operation_object['parameters']
    parameters.concat(parameters_on_operation) if parameters_on_operation
    parameters
  end
end


76
77
78
# File 'lib/openapi_first/definition/operation.rb', line 76

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

#header_parametersObject



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

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

#nameObject



57
58
59
# File 'lib/openapi_first/definition/operation.rb', line 57

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



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

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

#query_parametersObject



61
62
63
# File 'lib/openapi_first/definition/operation.rb', line 61

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_for(status) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/openapi_first/definition/operation.rb', line 49

def response_for(status)
  response_object = operation_object.dig('responses', status.to_s) ||
                    operation_object.dig('responses', "#{status / 100}XX") ||
                    operation_object.dig('responses', "#{status / 100}xx") ||
                    operation_object.dig('responses', 'default')
  Response.new(status, response_object, self) if response_object
end

#write?Boolean

Returns:

  • (Boolean)


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

def write?
  WRITE_METHODS.include?(method)
end