Class: Openapi::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/openapi/middleware.rb

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Middleware

Returns a new instance of Middleware.



3
4
5
# File 'lib/openapi/middleware.rb', line 3

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/openapi/middleware.rb', line 7

def call(env)
  unless Openapi.has_specs
    puts "[Openapi::Middleware] Building openapi specs..."
    Openapi.apis.each do |name, config|
      base_path = config[:base_path] || '/api'

      config[:controllers].each do |controller|
        controller.build_openapi_specification(base_path: base_path)
      end

      name = name.to_s.titleize.remove(' ')
      root_klass_name = "#{name}SwaggerRootController"
      klass = Object.const_set root_klass_name, Class.new(SwaggerRoot)
      klass.build_specification(config, config[:controllers])

      config[:controllers].push klass
    end

    Openapi.has_specs = true
  end

  @app.call(env)
end