Sha256: 363e9d31884c9c10cf40da71b64ab4e31ad72603fb2e82827af4e18755af2831

Contents?: true

Size: 1.04 KB

Versions: 13

Compression:

Stored size: 1.04 KB

Contents

module Rswag
  module Ui
    class Middleware < Rack::Static

      def initialize(app, config)
        @config = config
        super(app, urls: [ '' ], root: config.assets_root )
      end

      def call(env)
        if base_path?(env) 
          redirect_uri = env['SCRIPT_NAME'].chomp('/') + '/index.html'
          return [ 301, { 'Location' => redirect_uri }, [ ] ]
        end

        if index_path?(env)
          return [ 200, { 'Content-Type' => 'text/html' }, [ render_template ] ]
        end

        super
      end

      private

      def base_path?(env)
        env['REQUEST_METHOD'] == "GET" && env['PATH_INFO'] == "/"
      end

      def index_path?(env)
        env['REQUEST_METHOD'] == "GET" && env['PATH_INFO'] == "/index.html"
      end

      def render_template
        file = File.new(template_filename)
        template = ERB.new(file.read)
        template.result(@config.get_binding)
      end

      def template_filename
        @config.template_locations.find { |filename| File.exists?(filename) }
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 3 rubygems

Version Path
rswag-ui-2.2.0 lib/rswag/ui/middleware.rb
rswag-ui-2.1.1 lib/rswag/ui/middleware.rb
rswag-ui-2.1.0 lib/rswag/ui/middleware.rb
rswag-ui-2.0.6 lib/rswag/ui/middleware.rb
rswagger-ui-2.0.7 lib/rswag/ui/middleware.rb
rswagger-ui-2.0.6 lib/rswag/ui/middleware.rb
rswag3-ui-0.0.0 lib/rswag/ui/middleware.rb
rswag-ui-2.0.5 lib/rswag/ui/middleware.rb
rswag-ui-2.0.4 lib/rswag/ui/middleware.rb
rswag-ui-2.0.3 lib/rswag/ui/middleware.rb
rswag-ui-2.0.2 lib/rswag/ui/middleware.rb
rswag-ui-2.0.1 lib/rswag/ui/middleware.rb
rswag-ui-2.0.0 lib/rswag/ui/middleware.rb