diff --git a/rswag-api/lib/generators/rswag/api/install/templates/rswag_api.rb b/rswag-api/lib/generators/rswag/api/install/templates/rswag_api.rb index 5f3ddc4..28d4297 100644 --- a/rswag-api/lib/generators/rswag/api/install/templates/rswag_api.rb +++ b/rswag-api/lib/generators/rswag/api/install/templates/rswag_api.rb @@ -1,4 +1,4 @@ -Rswag::Api.configure do |c| +OpenApi::Rswag::Api.configure do |c| # Specify a root folder where Swagger JSON files are located # This is used by the Swagger middleware to serve requests for API descriptions diff --git a/rswag-api/lib/open_api/rswag/api.rb b/rswag-api/lib/open_api/rswag/api.rb new file mode 100644 index 0000000..a678900 --- /dev/null +++ b/rswag-api/lib/open_api/rswag/api.rb @@ -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 diff --git a/rswag-api/lib/rswag/api/configuration.rb b/rswag-api/lib/open_api/rswag/api/configuration.rb similarity index 92% rename from rswag-api/lib/rswag/api/configuration.rb rename to rswag-api/lib/open_api/rswag/api/configuration.rb index ff56180..c84cdf8 100644 --- a/rswag-api/lib/rswag/api/configuration.rb +++ b/rswag-api/lib/open_api/rswag/api/configuration.rb @@ -1,4 +1,4 @@ -module Rswag +module OpenApi::Rswag module Api class Configuration attr_accessor :swagger_root, :swagger_filter diff --git a/rswag-api/lib/rswag/api/engine.rb b/rswag-api/lib/open_api/rswag/api/engine.rb similarity index 78% rename from rswag-api/lib/rswag/api/engine.rb rename to rswag-api/lib/open_api/rswag/api/engine.rb index 893cf5f..6a996ca 100644 --- a/rswag-api/lib/rswag/api/engine.rb +++ b/rswag-api/lib/open_api/rswag/api/engine.rb @@ -1,6 +1,6 @@ -require 'rswag/api/middleware' +require 'open_api/rswag/api/middleware' -module Rswag +module OpenApi::Rswag module Api class Engine < ::Rails::Engine isolate_namespace Rswag::Api diff --git a/rswag-api/lib/open_api/rswag/api/middleware.rb b/rswag-api/lib/open_api/rswag/api/middleware.rb new file mode 100644 index 0000000..d7f791b --- /dev/null +++ b/rswag-api/lib/open_api/rswag/api/middleware.rb @@ -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 diff --git a/rswag-api/lib/rswag/api.rb b/rswag-api/lib/rswag/api.rb deleted file mode 100644 index 894072b..0000000 --- a/rswag-api/lib/rswag/api.rb +++ /dev/null @@ -1,14 +0,0 @@ -require 'rswag/api/configuration' -require 'rswag/api/engine' - -module Rswag - module Api - def self.configure - yield(config) - end - - def self.config - @config ||= Configuration.new - end - end -end diff --git a/rswag-api/lib/rswag/api/middleware.rb b/rswag-api/lib/rswag/api/middleware.rb deleted file mode 100644 index 118c987..0000000 --- a/rswag-api/lib/rswag/api/middleware.rb +++ /dev/null @@ -1,37 +0,0 @@ -require 'json' - -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 diff --git a/rswag-api/rswag-api.gemspec b/rswag-api/open_api-rswag-api.gemspec similarity index 87% rename from rswag-api/rswag-api.gemspec rename to rswag-api/open_api-rswag-api.gemspec index 299172d..80255b9 100644 --- a/rswag-api/rswag-api.gemspec +++ b/rswag-api/open_api-rswag-api.gemspec @@ -2,9 +2,9 @@ $:.push File.expand_path("../lib", __FILE__) # Describe your gem and declare its dependencies: Gem::Specification.new do |s| - s.name = "rswag-api" + s.name = "open_api-rswag-api" s.version = ENV['TRAVIS_TAG'] || '0.0.0' - s.authors = ["Richie Morris"] + s.authors = ["Richie Morris", "Jay Danielian"] s.email = ["domaindrivendev@gmail.com"] s.homepage = "https://github.com/domaindrivendev/rswag" s.summary = "A Rails Engine that exposes Swagger files as JSON endpoints" diff --git a/rswag-api/spec/generators/rswag/api/install_generator_spec.rb b/rswag-api/spec/generators/rswag/api/install_generator_spec.rb index 64b789e..6e983fc 100644 --- a/rswag-api/spec/generators/rswag/api/install_generator_spec.rb +++ b/rswag-api/spec/generators/rswag/api/install_generator_spec.rb @@ -1,6 +1,7 @@ require 'generator_spec' require 'generators/rswag/api/install/install_generator' + module Rswag module Api @@ -25,3 +26,4 @@ module Rswag end end end + diff --git a/rswag-api/spec/rswag/api/fixtures/config/routes.rb b/rswag-api/spec/open_api/rswag/api/fixtures/config/routes.rb similarity index 100% rename from rswag-api/spec/rswag/api/fixtures/config/routes.rb rename to rswag-api/spec/open_api/rswag/api/fixtures/config/routes.rb diff --git a/rswag-api/spec/rswag/api/fixtures/swagger/v1/swagger.json b/rswag-api/spec/open_api/rswag/api/fixtures/swagger/v1/swagger.json similarity index 100% rename from rswag-api/spec/rswag/api/fixtures/swagger/v1/swagger.json rename to rswag-api/spec/open_api/rswag/api/fixtures/swagger/v1/swagger.json diff --git a/rswag-api/spec/rswag/api/middleware_spec.rb b/rswag-api/spec/open_api/rswag/api/middleware_spec.rb similarity index 96% rename from rswag-api/spec/rswag/api/middleware_spec.rb rename to rswag-api/spec/open_api/rswag/api/middleware_spec.rb index 7be015d..3273c19 100644 --- a/rswag-api/spec/rswag/api/middleware_spec.rb +++ b/rswag-api/spec/open_api/rswag/api/middleware_spec.rb @@ -1,7 +1,7 @@ -require 'rswag/api/middleware' -require 'rswag/api/configuration' +require 'open_api/rswag/api/middleware' +require 'open_api/rswag/api/configuration' -module Rswag +module OpenApi::Rswag module Api describe Middleware do