Module: Scorpio::OpenAPI::V3::Operation

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)

Raises:

  • (ArgumentError)


225
226
227
228
229
230
231
232
233
# File 'lib/scorpio/openapi/operation.rb', line 225

def request_schema(media_type: self.request_media_type)
  # TODO typechecking on requestBody & children
  request_content = requestBody && requestBody['content']
  return nil unless request_content
  raise(ArgumentError, "please specify media_type for request_schema") unless media_type
  schema = request_content[media_type] && request_content[media_type]['schema']
  return nil unless schema
  JSI::Schema.ensure_schema(schema)
end

#request_schemasJSI::SchemaSet

Returns:

  • (JSI::SchemaSet)


236
237
238
239
240
241
242
243
244
245
246
# File 'lib/scorpio/openapi/operation.rb', line 236

def request_schemas
  JSI::SchemaSet.build do |schemas|
    if requestBody && requestBody['content']
      requestBody['content'].each_value do |oa_media_type|
        if oa_media_type['schema']
          schemas << oa_media_type['schema']
        end
      end
    end
  end
end

#response_schema(status:, media_type:) ⇒ JSI::Schema

Returns:

  • (JSI::Schema)


249
250
251
252
253
254
255
# File 'lib/scorpio/openapi/operation.rb', line 249

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.ensure_schema(oa_schema) : nil
end

#response_schemasJSI::SchemaSet

Returns:

  • (JSI::SchemaSet)


258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
# File 'lib/scorpio/openapi/operation.rb', line 258

def response_schemas
  JSI::SchemaSet.build do |schemas|
    if responses
      responses.each_value do |oa_response|
        if oa_response['content']
          oa_response['content'].each_value do |oa_media_type|
            if oa_media_type['schema']
              schemas << oa_media_type['schema']
            end
          end
        end
      end
    end
  end
end