diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2011-06-21 07:25:07 +0200 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2011-06-21 07:25:07 +0200 | 
| commit | 64e2170cd80b4fbb5e6986074df654c661b5a89b (patch) | |
| tree | ed432d538e3d71a3e7c5e4533cc34ad315932fd8 | |
| parent | 58e3798c12dd9343855668f01a433f6dbc6a2e51 (diff) | |
| download | zorglub-64e2170cd80b4fbb5e6986074df654c661b5a89b.zip zorglub-64e2170cd80b4fbb5e6986074df654c661b5a89b.tar.gz  | |
cleanup session.rb
| -rw-r--r-- | lib/zorglub/node.rb | 2 | ||||
| -rw-r--r-- | lib/zorglub/session.rb | 54 | 
2 files changed, 47 insertions, 9 deletions
diff --git a/lib/zorglub/node.rb b/lib/zorglub/node.rb index 14808ae..751bb4d 100644 --- a/lib/zorglub/node.rb +++ b/lib/zorglub/node.rb @@ -88,7 +88,7 @@ module Zorglub          end          #          def session -            @session ||= Session.new( Config.session_on ?  @request.cookies : {} ) +            @session ||= Session.new @request          end          #          def r diff --git a/lib/zorglub/session.rb b/lib/zorglub/session.rb index da30deb..a7c0b29 100644 --- a/lib/zorglub/session.rb +++ b/lib/zorglub/session.rb @@ -4,29 +4,67 @@ require 'securerandom'  #  module Zorglub      # +    class SessionHash +        # +        @data = {} +        class << self +            attr_reader :data +        end +        # +        def initialize sid +            @sid = sid +            # TODO if sid is nil, one should be created +            @session_data = SessionHash.data[sid]||={} +        end +        # +        def exists? +            not @sid.nil? +        end +        # +        def [] idx +            @session_data[idx] +        end +        # +        def []= idx, v +            @session_data[idx] = v +        end +    end +    #      class Session          #          @session_key =  'zorglub.sid' -        @session_data = {} +        @session_kls = Zorglub::SessionHash          class << self -            attr_reader :session_key, :session_data +            attr_accessor :session_key, :session_kls          end          # -        def initialize cookies -            @sid = cookies[self.class.session_key] -            @data = self.class.session_data[@sid]||={} +        def initialize req +            @request = req +            @instance = nil          end          # +        def setup! +            if Config.session_on +                @instance = Session.session_kls.new @request.cookies[Session.session_key] +            else +                @instance = {} +            end +        end +        private :setup! +        #          def exists? -            not @sid.nil? +            setup! if @instance.nil? +            @instance.exists?          end          #          def [] idx -            @data[idx] +            setup! if @instance.nil? +            @instance[idx]          end          #          def []= idx, v -            @data[idx] = v +            setup! if @instance.nil? +            @instance[idx] = v          end          #      end  | 
