Sha256: 2095eeaa636c5a0e7bdcab12e703aebc5dcd98468b23ce8af2ab546fea44c2bc
Contents?: true
Size: 1.27 KB
Versions: 11
Compression:
Stored size: 1.27 KB
Contents
# encoding: utf-8 module Prismic class BasicCacheEntry attr_reader :expired_in attr_reader :data def initialize(data, expired_in) @data = data @expired_in = expired_in end end class BasicCache attr_reader :cache attr_reader :expirations def initialize(data = {}) @cache = {} end def get(key) return delete(key) if expired?(key) include?(key) ? @cache[key].data : nil end def set(key, value = nil, expired_in = nil) data = block_given? ? yield : value expired_in = expired_in && Time.now.getutc.to_i + expired_in entry = BasicCacheEntry.new(data, expired_in) @cache[key] = entry entry.data end def include?(key) @cache.keys.include?(key) end def get_or_set(key, value = nil, expired_in = nil) return get(key) if include?(key) && !expired?(key) set(key, block_given? ? yield : value, expired_in) end def delete(key) @cache.delete(key) nil end def expired?(key) if include?(key) expired_in = @cache[key].expired_in expired_in && expired_in < Time.now.getutc.to_i else false end end def clear() @cache = {} end end DefaultApiCache = BasicCache.new end
Version data entries
11 entries across 11 versions & 1 rubygems