Thread: [Ruby-session-devel-cvs] CVS: ruby-session/src/apache session.rb,1.2,1.3
Status: Alpha
Brought to you by:
thetitan
From: Sean C. <the...@us...> - 2001-11-19 00:16:17
|
Update of /cvsroot/ruby-session/ruby-session/src/apache In directory usw-pr-cvs1:/tmp/cvs-serv16034 Modified Files: session.rb Log Message: Added write-thru cache for the location instance data Added prelim-stubs for cookies (default to off) Added initial code for a session Access handler for mod_ruby generate() is now the class method Session.generate() Cleaned up end block styles (reduces LoC) Alphabatized methods/functions Sessions now leave it up to the native persistence layer to worry about maintaining session start times (file stores a raw Time object instance) Variable renaming in the initialize method: gsub!(/options/, 'opts') Index: session.rb =================================================================== RCS file: /cvsroot/ruby-session/ruby-session/src/apache/session.rb,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- session.rb 2001/08/25 19:57:31 1.2 +++ session.rb 2001/11/19 00:16:15 1.3 @@ -42,52 +42,45 @@ module Apache class Session - attr_accessor :data, :expired, :session_dir, :session_id - attr_reader :location, :session_id_length, :start_time, :type + attr_accessor :cookies, :data, :expired, :session_dir, :session_id + attr_reader :session_id_length, :start_time, :type + # + # Class methods + # + + # RubyAccessHandler Apache::Session + def Session.check_access (r) + if ENV.has_key?('SESSION') + if ENV['SESSION'] == 'require' + # Test to see if the request has a session + + # if the request doesn't have a session, then generate a + # session using Session.generate(), append it to the URL, + # and send a 302 response - public - - def [] (key) - return(@data[key]) - end - # End: def [] () - - - def []= (key, value) - return(@data[key] = value) - end - # End: def []= () + end + else + # if ruby-session can't handle this request, then pass the + # request to the next access handler - def delete () - @location = self.make_location unless(@location) - self._delete - end - # End: def delete () + return(Apache::DECLINED) + end # if ENV.has_key?() + end # def Session.check_access def Session.exist? (location) return(Session._exist?(location)) - end - # End: def Session.exist? () + end # def Session.exist? - def exist? (session_id) - @location = self.make_location unless (@location) - return(self._exist?) - end - # End: def exist? () - - - def generate () + def Session.generate () require 'digest/md5' md5digest = Digest::MD5.new md5digest.update(Time.now.to_f.to_s + rand.to_s + $$.to_s) - @session_id = md5digest.hexdigest - return(@session_id) - end - # End: def generate () + return(md5digest.hexdigest) + end # def Session.generate def Session.make_location (*args) @@ -96,33 +89,55 @@ rescue NameError raise RuntimeError, "No Session persistence layers available" end - end - # End: def Session.make_location () + end # def Session.make_location - def persist () - @location = self.make_location unless(@location) + public # methods + + + def [] (key) + return(@data[key]) + end # def [] + + def []= (key, value) + return(@data[key] = value) + end # def []= + + + def delete () + self._delete + end # def delete + + + def exist? (session_id) + return(self._exist?) + end # def exist? + + + def location () + @location = self.make_location unless (@location) + return(@location) + end # def location + + + def persist () @data['__ruby_session_expired__'] = (@expired ? 'y' : 'n') - @data['__ruby_session_start_time__'] = @start_time.to_f.to_s + @data['__ruby_session_start_time__'] = @start_time self._persist @data.delete('__ruby_session_expired__') @data.delete('__ruby_session_start_time__') - end - # End: def persist () + end # def persist def restore () - @location = self.make_location unless(@location) - self._restore + @start_time = @data.delete('__ruby_session_start_time__') @expired = (@data.delete('__ruby_session_expired__') == 'y' ? true : false) - @start_time = Time.at(@data.delete('__ruby_session_start_time__').to_f) - end - # End: def restore () + end # def restore def type= (type) @@ -132,37 +147,33 @@ rescue LoadError raise LoadError, "Invalid Session Type '#{type}'" end - end - # End: def type= () + + return(@type) + end # def type= private - def initialize (options = {}) - @data = (options.has_key?('session_data') ? options['session_data'] : {}) + def initialize (opts = {}) + @cookies = (opts.has_key?('cookies') ? opts['cookies'] : false) + @data = (opts.has_key?('session_data') ? opts['session_data'] : {}) @expired = false @location = nil - @session_dir = (options.has_key?('session_dir') ? options['session_dir'] : '/tmp') + @session_dir = (opts.has_key?('session_dir') ? opts['session_dir'] : '/tmp') @session_id = nil @start_time = Time.now - @type = nil + @type = self.type = (opts.has_key?('type') ? opts['type'] : 'file') - self.type = (options.has_key?('type') ? options['type'] : 'file') - - if options.has_key?('session_id') - @session_id = options['session_id'] + if opts.has_key?('session_id') + @session_id = opts['session_id'] self.restore else - @session_id = self.generate - end - # End: if options.has_key?('session_id') + @session_id = Session.generate + end # if opts.has_key?('session_id') - end - # End: def initialize () + end # def initialize () - end - # End: class Session + end # class Session -end -# End: module Apache +end # module Apache |