Class: Scorpio::OpenAPI::V3::Operation

Inherits:
Object
  • Object
show all
Includes:
Operation, Configurables
Defined in:
lib/scorpio/openapi/operation.rb,
lib/scorpio/openapi.rb

Overview

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

Methods included from Configurables

#scheme

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

Returns:

  • (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_schemasArray<JSI::Schema>

Returns:

  • (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

Returns:

  • (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