Sha256: 5d173f4d5703384637a90bbf2265a18c8939c31e972ad228c0e5c3a531709297

Contents?: true

Size: 1.29 KB

Versions: 5

Compression:

Stored size: 1.29 KB

Contents

module Gluttonberg
  module Middleware
    class Rewriter
      def initialize(app)
        @app = app
      end

      def call(env)
        path = env['PATH_INFO']
        unless path =~ /^#{Gluttonberg::Engine.config.admin_path}/ || path.start_with?("/assets/") || path.start_with?("/user_asset/")
          page = Gluttonberg::Page.find_by_path(path, env['gluttonberg.locale'] , env['HTTP_HOST'])
          unless page.blank?
            env['gluttonberg.page'] = page
            env['GLUTTONBERG.PATH_INFO'] = path
            if page.redirect_required?
              return [301, {"Location" => page.redirect_url}, ["This resource has permanently moved to #{page.redirect_url}"]]
            elsif page.rewrite_required?
              env['PATH_INFO'] = page.generate_rewrite_path(path)
            else
              env['PATH_INFO'] = "/_public/page"
            end
          else
            page = Gluttonberg::Page.find_by_previous_path(path, env['gluttonberg.locale'] , env['HTTP_HOST'])
            unless page.blank?
              return [301, {"Location" => page.current_localization.path}, ["This resource has permanently moved to #{page.current_localization.path}"]]
            end
          end
        end

        @app.call(env)
      end
    end # Rewriter
  end # Middleware
end # Gluttonberg

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
gluttonberg-core-2.6.4 lib/gluttonberg/middleware/rewriter.rb
gluttonberg-core-2.6.3 lib/gluttonberg/middleware/rewriter.rb
gluttonberg-core-2.6.2 lib/gluttonberg/middleware/rewriter.rb
gluttonberg-core-2.6.1 lib/gluttonberg/middleware/rewriter.rb
gluttonberg-core-2.6.0 lib/gluttonberg/middleware/rewriter.rb