Sha256: 137e252cda7eaf6fee28096793cc15574a38e5bab0ac83ea90e60b60c4e1f7b8

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

require_relative 'base_object'
require_relative 'tag_object'
require_relative 'server_object'
require_relative 'info_object'
require_relative 'external_document_object'
require_relative 'components_object'
require_relative 'paths_object'

module R2OAS
  module Schema
    module V3
      class OpenapiObject < BaseObject
        def initialize(routes_data, tags_data, schemas_data, opts = {})
          super(opts)
          @routes_data = routes_data
          @tags_data = tags_data
          @schemas_data = schemas_data
        end

        def to_doc
          result = {
            'openapi' => '3.0.0',
            'info' => info_doc,
            'tags' => tags_doc,
            'paths' => paths_doc,
            'externalDocs' => external_docs_doc,
            'servers' => servers_doc,
            'components' => components_doc
          }
          doc.merge!(result)
        end

        private

        def info_doc
          InfoObject.new(@opts).to_doc
        end

        def tags_doc
          TagObject.new(@tags_data, @opts).to_doc
        end

        def paths_doc
          PathsObject.new(@routes_data, @opts).to_doc
        end

        def external_docs_doc
          ExternalDocumentObject.new(@opts).to_doc
        end

        def servers_doc
          ServerObject.new(@opts).to_doc
        end

        def components_doc
          ComponentsObject.new(@routes_data, @opts).to_doc
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
r2-oas-0.5.0 lib/r2-oas/schema/v3/object/from_routes/openapi_object.rb