aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/vendor/rack-0.4.0/rack/session/abstract/id.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_controller/vendor/rack-0.4.0/rack/session/abstract/id.rb')
-rw-r--r--actionpack/lib/action_controller/vendor/rack-0.4.0/rack/session/abstract/id.rb140
1 files changed, 0 insertions, 140 deletions
diff --git a/actionpack/lib/action_controller/vendor/rack-0.4.0/rack/session/abstract/id.rb b/actionpack/lib/action_controller/vendor/rack-0.4.0/rack/session/abstract/id.rb
deleted file mode 100644
index c220b2cb8d..0000000000
--- a/actionpack/lib/action_controller/vendor/rack-0.4.0/rack/session/abstract/id.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-# AUTHOR: blink <blinketje@gmail.com>; blink#ruby-lang@irc.freenode.net
-# bugrep: Andreas Zehnder
-
-require 'rack/utils'
-require 'time'
-
-module Rack
- module Session
- module Abstract
- # ID sets up a basic framework for implementing an id based sessioning
- # service. Cookies sent to the client for maintaining sessions will only
- # contain an id reference. Only #get_session and #set_session should
- # need to be overwritten.
- #
- # All parameters are optional.
- # * :key determines the name of the cookie, by default it is
- # 'rack.session'
- # * :domain and :path set the related cookie values, by default
- # domain is nil, and the path is '/'.
- # * :expire_after is the number of seconds in which the session
- # cookie will expire. By default it is set not to provide any
- # expiry time.
- class ID
- attr_reader :key
- DEFAULT_OPTIONS = {
- :key => 'rack.session',
- :path => '/',
- :domain => nil,
- :expire_after => nil
- }
-
- def initialize(app, options={})
- @default_options = self.class::DEFAULT_OPTIONS.merge(options)
- @key = @default_options[:key]
- @default_context = context app
- end
-
- def call(env)
- @default_context.call(env)
- end
-
- def context(app)
- Rack::Utils::Context.new self, app do |env|
- load_session env
- response = app.call(env)
- commit_session env, response
- response
- end
- end
-
- private
-
- # Extracts the session id from provided cookies and passes it and the
- # environment to #get_session. It then sets the resulting session into
- # 'rack.session', and places options and session metadata into
- # 'rack.session.options'.
- def load_session(env)
- sid = (env['HTTP_COOKIE']||'')[/#{@key}=([^,;]+)/,1]
- sid, session = get_session(env, sid)
- unless session.is_a?(Hash)
- puts 'Session: '+sid.inspect+"\n"+session.inspect if $DEBUG
- raise TypeError, 'Session not a Hash'
- end
-
- options = @default_options.
- merge({ :id => sid, :by => self, :at => Time.now })
-
- env['rack.session'] = session
- env['rack.session.options'] = options
-
- return true
- end
-
- # Acquires the session from the environment and the session id from
- # the session options and passes them to #set_session. It then
- # proceeds to set a cookie up in the response with the session's id.
- def commit_session(env, response)
- unless response.is_a?(Array)
- puts 'Response: '+response.inspect if $DEBUG
- raise ArgumentError, 'Response is not an array.'
- end
-
- options = env['rack.session.options']
- unless options.is_a?(Hash)
- puts 'Options: '+options.inspect if $DEBUG
- raise TypeError, 'Options not a Hash'
- end
-
- sid, time, z = options.values_at(:id, :at, :by)
- unless self == z
- warn "#{self} not managing this session."
- return
- end
-
- unless env['rack.session'].is_a?(Hash)
- warn 'Session: '+sid.inspect+"\n"+session.inspect if $DEBUG
- raise TypeError, 'Session not a Hash'
- end
-
- unless set_session(env, sid)
- warn "Session not saved." if $DEBUG
- warn "#{env['rack.session'].inspect} has been lost."if $DEBUG
- return false
- end
-
- cookie = Utils.escape(@key)+'='+Utils.escape(sid)
- cookie<< "; domain=#{options[:domain]}" if options[:domain]
- cookie<< "; path=#{options[:path]}" if options[:path]
- if options[:expire_after]
- expiry = time + options[:expire_after]
- cookie<< "; expires=#{expiry.httpdate}"
- end
-
- case a = (h = response[1])['Set-Cookie']
- when Array then a << cookie
- when String then h['Set-Cookie'] = [a, cookie]
- when nil then h['Set-Cookie'] = cookie
- end
-
- return true
- end
-
- # Should return [session_id, session]. All thread safety and session
- # retrival proceedures should occur here.
- # If nil is provided as the session id, generation of a new valid id
- # should occur within.
- def get_session(env, sid)
- raise '#get_session needs to be implemented.'
- end
-
- # All thread safety and session storage proceedures should occur here.
- # Should return true or false dependant on whether or not the session
- # was saved or not.
- def set_session(env, sid)
- raise '#set_session needs to be implemented.'
- end
- end
- end
- end
-end