Class: OpenapiBlocks::Spec::Document

Inherits:
Object
  • Object
show all
Defined in:
lib/openapi_blocks/spec/document.rb

Overview

rubocop:disable Style/Documentation

Instance Method Summary collapse

Constructor Details

#initialize(openapi_classes) ⇒ Document

Returns a new instance of Document.



9
10
11
# File 'lib/openapi_blocks/spec/document.rb', line 9

def initialize(openapi_classes)
  @openapi_classes = openapi_classes
end

Instance Method Details

#buildObject

rubocop:disable Metrics/AbcSize,Metrics/MethodLength



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/openapi_blocks/spec/document.rb', line 13

def build # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
  config     = OpenapiBlocks.configuration
  components = Components.new(@openapi_classes).build
  security   = config.security

  components[:securitySchemes] = security.to_h if security&.schemes&.any?

  paths = Paths.new.build

  doc = {
    openapi:    config.openapi_version,
    info:       config.info.to_h,
    servers:    config.to_h[:servers],
    paths:      paths,
    components: components,
    tags:       build_tags_from_paths(paths)
  }

  doc[:security] = security.schemes.keys.map { |s| { s => [] } } if security&.schemes&.any?

  doc
end