Class: OpenapiFirst::Operation
- Inherits:
-
Object
- Object
- OpenapiFirst::Operation
- Extended by:
- Forwardable
- Defined in:
- lib/openapi_first/definition/operation.rb
Instance Attribute Summary collapse
-
#method ⇒ Object
readonly
Returns the value of attribute method.
-
#openapi_version ⇒ Object
readonly
Returns the value of attribute openapi_version.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
Instance Method Summary collapse
- #all_parameters ⇒ Object
- #cookie_parameters ⇒ Object
- #header_parameters ⇒ Object
-
#initialize(path, request_method, path_item_object, openapi_version:) ⇒ Operation
constructor
A new instance of Operation.
- #name ⇒ Object
- #operation_id ⇒ Object
- #path_parameters ⇒ Object
- #query_parameters ⇒ Object
- #read? ⇒ Boolean
- #request_body ⇒ Object
- #response_for(status) ⇒ Object
- #write? ⇒ Boolean
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
#method ⇒ Object (readonly)
Returns the value of attribute method.
23 24 25 |
# File 'lib/openapi_first/definition/operation.rb', line 23 def method @method end |
#openapi_version ⇒ Object (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 |
#path ⇒ Object (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_parameters ⇒ Object
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 |
#cookie_parameters ⇒ Object
76 77 78 |
# File 'lib/openapi_first/definition/operation.rb', line 76 def @cookie_parameters ||= build_parameters(all_parameters.filter { |p| p['in'] == 'cookie' }, CookieParameters) end |
#header_parameters ⇒ Object
72 73 74 |
# File 'lib/openapi_first/definition/operation.rb', line 72 def header_parameters @header_parameters ||= build_parameters(find_header_parameters, HeaderParameters) end |
#name ⇒ Object
57 58 59 |
# File 'lib/openapi_first/definition/operation.rb', line 57 def name @name ||= "#{method.upcase} #{path} (#{operation_id})" end |
#operation_id ⇒ Object
33 34 35 |
# File 'lib/openapi_first/definition/operation.rb', line 33 def operation_id operation_object['operationId'] end |
#path_parameters ⇒ Object
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_parameters ⇒ Object
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
37 38 39 |
# File 'lib/openapi_first/definition/operation.rb', line 37 def read? !write? end |
#request_body ⇒ Object
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
41 42 43 |
# File 'lib/openapi_first/definition/operation.rb', line 41 def write? WRITE_METHODS.include?(method) end |