1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- module Sessions::CacheIn
- # rubocop:disable Style/ClassVars
- @@data = {}
- @@data_time = {}
- @@expires_in = {}
- @@expires_in_ttl = {}
- # rubocop:enable Style/ClassVars
- def self.delete(key)
- @@data.delete(key)
- @@data_time.delete(key)
- end
- def self.set(key, value, params = {})
- if params[:expires_in]
- @@expires_in[key] = Time.zone.now + params[:expires_in]
- @@expires_in_ttl[key] = params[:expires_in]
- end
- @@data[ key ] = value
- @@data_time[ key ] = Time.zone.now
- end
- def self.expired(key, params = {})
- # expire if value never was set
- return true if !@@data.include? key
- # ignore_expire
- return false if params[:ignore_expire]
- # set re_expire
- if params[:re_expire]
- if @@expires_in[key]
- @@expires_in[key] = Time.zone.now + @@expires_in_ttl[key]
- end
- return false
- end
- # check if expired
- if @@expires_in[key]
- return true if @@expires_in[key] < Time.zone.now
- return false
- end
- # return false if key was set without expires_in
- false
- end
- def self.get(key, params = {})
- return if expired( key, params)
- @@data[ key ]
- end
- end
|