[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
|