Class: Scorpio::OpenAPI::V3::Operation
- Inherits:
-
Object
- Object
- Scorpio::OpenAPI::V3::Operation
- Includes:
- Operation, Configurables
- Defined in:
- lib/scorpio/openapi/operation.rb,
lib/scorpio/openapi.rb
Overview
Describes a single API operation on a path.
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#operationObject
Defined Under Namespace
Modules: Configurables
Instance Attribute Summary
Attributes included from Configurables
#request_media_type, #server, #server_variables
Attributes included from Operation::Configurables
#base_url, #faraday_adapter, #faraday_builder, #logger, #request_headers, #user_agent
Instance Method Summary collapse
- #request_schema(media_type: self.request_media_type) ⇒ JSI::Schema
- #request_schemas ⇒ Array<JSI::Schema>
- #response_schema(status:, media_type:) ⇒ JSI::Schema
Methods included from Configurables
Methods included from Operation
#build_request, #http_method, #human_id, #inferred_parameters, #oa_response, #openapi_document, #path_template, #path_template_str, #request_accessor_module, #run, #run_ur, #uri_template, #v2?, #v3?
Instance Method Details
#request_schema(media_type: self.request_media_type) ⇒ JSI::Schema
217 218 219 220 221 222 223 224 |
# File 'lib/scorpio/openapi/operation.rb', line 217 def request_schema(media_type: self.request_media_type) # TODO typechecking on requestBody & children schema_object = requestBody && requestBody['content'] && requestBody['content'][media_type] && requestBody['content'][media_type]['schema'] schema_object ? JSI::Schema.from_object(schema_object) : nil end |
#request_schemas ⇒ Array<JSI::Schema>
227 228 229 230 231 232 233 234 235 |
# File 'lib/scorpio/openapi/operation.rb', line 227 def request_schemas if requestBody && requestBody['content'] # oamt is for Scorpio::OpenAPI::V3::MediaType oamts = requestBody['content'].values.select { |oamt| oamt.key?('schema') } oamts.map { |oamt| JSI::Schema.from_object(oamt['schema']) } else [] end end |
#response_schema(status:, media_type:) ⇒ JSI::Schema
238 239 240 241 242 243 244 |
# File 'lib/scorpio/openapi/operation.rb', line 238 def response_schema(status: , media_type: ) oa_response = self.oa_response(status: status) oa_media_types = oa_response ? oa_response['content'] : nil # Scorpio::OpenAPI::V3::MediaTypes oa_media_type = oa_media_types ? oa_media_types[media_type] : nil # Scorpio::OpenAPI::V3::MediaType oa_schema = oa_media_type ? oa_media_type['schema'] : nil # Scorpio::OpenAPI::V3::Schema oa_schema ? JSI::Schema.new(oa_schema) : nil end |