Renames rswag-api to open_api-rswag-api

This commit is contained in:
Jay Danielian
2019-07-23 22:23:59 -04:00
parent b8dcc8fe30
commit 27a7481b48
12 changed files with 69 additions and 60 deletions

View File

@@ -0,0 +1,19 @@
module OpenApi
end
require 'open_api/rswag/api/configuration'
require 'open_api/rswag/api/engine'
module OpenApi
module Rswag
module Api
def self.configure
yield(config)
end
def self.config
@config ||= Configuration.new
end
end
end
end

View File

@@ -0,0 +1,12 @@
module OpenApi::Rswag
module Api
class Configuration
attr_accessor :swagger_root, :swagger_filter
def resolve_swagger_root(env)
path_params = env['action_dispatch.request.path_parameters'] || {}
path_params[:swagger_root] || swagger_root
end
end
end
end

View File

@@ -0,0 +1,13 @@
require 'open_api/rswag/api/middleware'
module OpenApi::Rswag
module Api
class Engine < ::Rails::Engine
isolate_namespace Rswag::Api
initializer 'rswag-api.initialize' do |app|
middleware.use Rswag::Api::Middleware, Rswag::Api.config
end
end
end
end

View File

@@ -0,0 +1,39 @@
require 'json'
module OpenApi
module Rswag
module Api
class Middleware
def initialize(app, config)
@app = app
@config = config
end
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
def load_json(filename)
JSON.parse(File.read(filename))
end
end
end
end
end