Module: Scorpio::OpenAPI::Document

Includes:
Configurables
Included in:
Google::RestDescription, V2Methods, V3Methods
Defined in:
lib/scorpio/openapi/document.rb,
lib/scorpio/openapi/document.rb,
lib/scorpio/openapi/document.rb

Overview

A document that defines or describes an API. An OpenAPI description document uses and conforms to the OpenAPI Specification.

Scorpio::OpenAPI::Document is a module common to V2 and V3 documents.

Defined Under Namespace

Modules: Configurables, Descendent, V2Methods, V3Methods

Instance Attribute Summary

Attributes included from Configurables

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_instance(instance, **kw) ⇒ Object

Deprecated.

after v0.8.0. use new_document.



39
40
41
# File 'lib/scorpio/openapi/document.rb', line 39

def from_instance(instance, **kw)
  Scorpio.new_document(instance, **kw)
end

.new_document(instance, **new_param) ⇒ JSI::Base + Scorpio::OpenAPI::Document

takes a document, generally a Hash, and returns a Scorpio OpenAPI Document instantiating it.

Parameters:

  • instance (#to_hash)

    the document to represent as a Scorpio OpenAPI Document

Returns:



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/scorpio/openapi/document.rb', line 16

def new_document(instance, **new_param)
  if instance.is_a?(Scorpio::OpenAPI::Document)
    instance
  elsif instance.is_a?(JSI::Base)
    raise(TypeError, -"instance is unexpected JSI type: #{instance.class.inspect}")
  elsif instance.respond_to?(:to_hash)
    if (instance['swagger'].is_a?(String) && instance['swagger'] =~ /\A2(\.|\z)/) || instance['swagger'] == 2
      Scorpio::OpenAPI::V2::Document.new_jsi(instance, **new_param)
    elsif (instance['openapi'].is_a?(String) && instance['openapi'] =~ /\A3\.0(\.|\z)/) || instance['openapi'] == 3.0
      Scorpio::OpenAPI::V3_0::Document.new_jsi(instance, **new_param)
    elsif (instance['openapi'].is_a?(String) && instance['openapi'] =~ /\A3\.1(\.|\z)/) || instance['openapi'] == 3.1
      Scorpio::OpenAPI::V3_1.new_document(instance, **new_param)
    elsif instance['kind'] == 'discovery#restDescription'
      Scorpio::Google::RestDescription.new_jsi(instance, register: true, **new_param)
    else
      raise(ArgumentError, "instance does not look like a recognized openapi document")
    end
  else
    raise(TypeError, "instance does not look like a hash (json object)")
  end
end

Instance Method Details

#each_operation(&block) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
# File 'lib/scorpio/openapi/document.rb', line 109

def each_operation(&block)
  return(to_enum(__method__)) unless block

  paths.each do |path, path_item|
    path_item.each do |http_method, operation|
      if operation.is_a?(Scorpio::OpenAPI::Operation)
        yield(operation)
      end
    end
  end
end

#operationsObject



104
105
106
107
# File 'lib/scorpio/openapi/document.rb', line 104

def operations
  return @operations if instance_variable_defined?(:@operations)
  @operations = OperationsScope.new(each_operation)
end

#titleObject



121
122
123
# File 'lib/scorpio/openapi/document.rb', line 121

def title
  info && info.title
end

#v2?Boolean

Returns:

  • (Boolean)


96
97
98
# File 'lib/scorpio/openapi/document.rb', line 96

def v2?
  is_a?(OpenAPI::V2::Document)
end

#v3?Boolean

Returns:

  • (Boolean)


100
101
102
# File 'lib/scorpio/openapi/document.rb', line 100

def v3?
  is_a?(OpenAPI::Document::V3Methods)
end