Sha256: a38c2958a1c1933d4013da069843517c534d145df0625be054f76e9e27daecc2
Contents?: true
Size: 863 Bytes
Versions: 153
Compression:
Stored size: 863 Bytes
Contents
require "pstore" module Danger class HTTPCache attr_reader :expires_in def initialize(cache_file = nil, options = {}) File.delete(cache_file) if options[:clear_cache] @store = PStore.new(cache_file) @expires_in = options[:expires_in] || 300 # 5 minutes end def read(key) @store.transaction do entry = @store[key] return nil unless entry return entry[:value] unless entry_has_expired(entry, @expires_in) @store.delete key return nil end end def delete(key) @store.transaction { @store.delete key } end def write(key, value) @store.transaction do @store[key] = { updated_at: Time.now.to_i, value: value } end end def entry_has_expired(entry, ttl) Time.now.to_i > entry[:updated_at].to_i + ttl.to_i end end end
Version data entries
153 entries across 153 versions & 1 rubygems