Class: GemChangelogDiff::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/gem_changelog_diff/cache.rb

Constant Summary collapse

DEFAULT_DIR =
File.join(Dir.home, ".cache", "gem_changelog_diff")
DEFAULT_TTL =
86_400

Instance Method Summary collapse

Constructor Details

#initialize(cache_dir: DEFAULT_DIR, ttl: DEFAULT_TTL, enabled: true) ⇒ Cache

Returns a new instance of Cache.



13
14
15
16
17
# File 'lib/gem_changelog_diff/cache.rb', line 13

def initialize(cache_dir: DEFAULT_DIR, ttl: DEFAULT_TTL, enabled: true)
  @cache_dir = cache_dir
  @ttl = ttl
  @enabled = enabled
end

Instance Method Details

#clearObject



34
35
36
# File 'lib/gem_changelog_diff/cache.rb', line 34

def clear
  FileUtils.rm_rf(@cache_dir)
end

#get(uri, headers: {}) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/gem_changelog_diff/cache.rb', line 19

def get(uri, headers: {})
  return fetch_from_network(uri, headers) unless @enabled

  key = cache_key(uri)
  entry = read_entry(key)

  if entry && fresh?(entry)
    build_response(entry)
  elsif entry && entry["etag"]
    revalidate(uri, headers, entry, key)
  else
    fetch_and_store(uri, headers, key)
  end
end