Module: Scorpio::OpenAPI::Operation::V3Methods

Includes:
Scorpio::OpenAPI::Operation, Configurables
Included in:
V3_0::Operation
Defined in:
lib/scorpio/openapi/operation.rb

Defined Under Namespace

Modules: Configurables

Instance Attribute Summary

Attributes included from Configurables

#accept, #authorization, #base_url, #faraday_adapter, #faraday_builder, #logger, #request_headers, #user_agent

Attributes included from Configurables

#request_media_type, #server, #server_variables

Instance Method Summary collapse

Methods included from Scorpio::OpenAPI::Operation

#build_request, #delete?, #each_link_page, #get?, #head?, #http_method, #human_id, #inferred_parameters, #inherited_parameters, #oa_response, #options?, #patch?, #path_template, #path_template_str, #post?, #put?, #run, #run_ur, #tagged?, #trace?, #uri_template, #v2?, #v3?

Methods included from Document::Descendent

#openapi_document

Methods included from Configurables

#scheme

Instance Method Details

#request_schema(media_type: self.request_media_type) ⇒ JSI::Schema

Returns:

  • (JSI::Schema)

Raises:

  • (ArgumentError)


286
287
288
289
290
291
292
293
294
# File 'lib/scorpio/openapi/operation.rb', line 286

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)


297
298
299
300
301
302
303
304
305
306
307
# File 'lib/scorpio/openapi/operation.rb', line 297

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, nil)


310
311
312
313
314
315
316
317
318
# File 'lib/scorpio/openapi/operation.rb', line 310

def response_schema(status: , media_type: )
  oa_response = self.oa_response(status: status) || return
  oa_media_types = oa_response['content'] || return # Scorpio::OpenAPI::V3_*::MediaTypes
  oa_media_type = oa_media_types[media_type] # Scorpio::OpenAPI::V3_*::MediaType
  oa_media_type ||= oa_media_types[-"#{::Ur::ContentType.new(media_type).type}/*"]
  oa_media_type ||= oa_media_types['*/*'] || return
  oa_schema = oa_media_type['schema'] || return # JSI::Schema, Scorpio::OpenAPI::V3_*::Schema
  JSI::Schema.ensure_schema(oa_schema)
end

#response_schemasJSI::SchemaSet

Returns:

  • (JSI::SchemaSet)


321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
# File 'lib/scorpio/openapi/operation.rb', line 321

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