Sha256: b107f044c68587cb94275bf7add92d9c40902a73b507bfe854f4fcc8d80e06a2

Contents?: true

Size: 1.16 KB

Versions: 4

Compression:

Stored size: 1.16 KB

Contents

require 'deas/handler_proxy'
require 'deas/url'
require 'deas/view_handler'

module Deas

  class RedirectProxy < HandlerProxy

    attr_reader :handler_class_name, :handler_class

    def initialize(router, path = nil, &block)
      @handler_class = Class.new do
        include Deas::ViewHandler

        def self.router; @router; end
        def self.router=(value)
          @router = value
        end

        def self.redirect_path; @redirect_path; end
        def self.redirect_path=(value)
          @redirect_path = value
        end

        def self.name; 'Deas::RedirectHandler'; end

        attr_reader :redirect_path

        def init!
          @redirect_path = self.class.router.prepend_base_url(
            self.instance_eval(&self.class.redirect_path)
          )
        end

        def run!
          redirect @redirect_path
        end

      end

      @handler_class.router = router
      @handler_class.redirect_path = if path.nil?
        block
      elsif path.kind_of?(Deas::Url)
        proc{ path.path_for(params) }
      else
        proc{ path }
      end
      @handler_class_name = @handler_class.name
    end

    def validate!; end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
deas-0.38.0 lib/deas/redirect_proxy.rb
deas-0.37.1 lib/deas/redirect_proxy.rb
deas-0.37.0 lib/deas/redirect_proxy.rb
deas-0.36.0 lib/deas/redirect_proxy.rb