class OpenApi::Rswag::Api::Middleware

Public Class Methods

new(app, config) click to toggle source
# File lib/open_api/rswag/api/middleware.rb, line 8
def initialize(app, config)
  @app = app
  @config = config
end

Public Instance Methods

call(env) click to toggle source
# File lib/open_api/rswag/api/middleware.rb, line 13
def call(env)
  path = env['PATH_INFO']
  filename = "#{@config.resolve_swagger_root(env)}/#{path}"

  if env['REQUEST_METHOD'] == 'GET' && File.file?(filename)
    swagger = load_json(filename)
    @config.swagger_filter.call(swagger, env) unless @config.swagger_filter.nil?

    return [
      '200',
      { 'Content-Type' => 'application/json' },
      [ JSON.dump(swagger) ]
    ]
  end

  return @app.call(env)
end

Private Instance Methods

load_json(filename) click to toggle source
# File lib/open_api/rswag/api/middleware.rb, line 33
def load_json(filename)
  JSON.parse(File.read(filename))
end