Sha256: 83a01f6bd9306d0db34ee2396940b9fe47864845c325ce551de3d670a70345a6

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

require 'rack'

module Wee
  
  class Request < Rack::Request

    def self.new(env)
      env['wee.request'] ||= super 
    end

    attr_reader :fields
    attr_accessor :session_id
    attr_accessor :page_id

    def initialize(env)
      super(env)
      @fields = self.params
      @session_id = @fields.delete("_s")
      @page_id = @fields.delete("_p")
    end

    # Is this an action request?
    def action?
      not render?
    end

    # Is this a render request?
    def render?
      @fields.empty?
    end

    alias ajax? xhr?

    def build_url(hash={})
      session_id = hash.has_key?(:session_id) ? hash[:session_id] : @session_id
      page_id = hash.has_key?(:page_id) ? hash[:page_id] : @page_id
      callback_id = hash[:callback_id]
      info = hash.has_key?(:info) ? hash[:info] : @info

      raise ArgumentError if session_id.nil? and not page_id.nil?
      raise ArgumentError if page_id.nil? and not callback_id.nil?

      q = {}
      q['_s'] = session_id if session_id
      q['_p'] = page_id if page_id
      q[callback_id] = nil if callback_id 

      path = script_name() + (info || path_info())
      path << "?" << Rack::Utils.build_query(q) unless q.empty? 

      return path
    end

  end # class Request

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mullen-wee-2.2.0 lib/wee/request.rb