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

Version Path
prismic.io-1.1.1 lib/prismic/cache/basic.rb
prismic.io-1.1.0 lib/prismic/cache/basic.rb
prismic.io-1.0.9 lib/prismic/cache/basic.rb
prismic.io-1.0.8 lib/prismic/cache/basic.rb
prismic.io-1.0.7 lib/prismic/cache/basic.rb
prismic.io-1.0.6 lib/prismic/cache/basic.rb
prismic.io-1.0.5 lib/prismic/cache/basic.rb
prismic.io-1.0.4 lib/prismic/cache/basic.rb
prismic.io-1.0.3 lib/prismic/cache/basic.rb
prismic.io-1.0.2 lib/prismic/cache/basic.rb
prismic.io-1.0.1 lib/prismic/cache/basic.rb