Class: Zypper::Onlinesearch::Cache

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(operation, engine) ⇒ Cache

Returns a new instance of Cache.



9
10
11
12
# File 'lib/zypper/onlinesearch/cache.rb', line 9

def initialize(operation, engine)
  @base_folder = File.join(ENV['HOME'], '.cache', 'zypper-onlinesearch', engine, operation)
  FileUtils.mkdir_p @base_folder unless Dir.exists? @base_folder
end

Class Method Details

.reset!Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/zypper/onlinesearch/cache.rb', line 29

def self.reset!
  base_folder = File.join(ENV['HOME'], '.cache', 'zypper-onlinesearch')
  if Dir.exist? base_folder
    size = Dir.glob(File.join(base_folder, '**', '*')).map{ |f| File.size(f) }.inject(:+)
    FileUtils.remove_dir base_folder
    return size
  else
    raise EmptyCache
  end
end

Instance Method Details

#exists?(query) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/zypper/onlinesearch/cache.rb', line 25

def exists?(query)
  File.exists?(File.join(@base_folder, query_to_filename(query)))
end

#get(query) ⇒ Object



20
21
22
23
# File 'lib/zypper/onlinesearch/cache.rb', line 20

def get(query)
  fname = query_to_filename(query)
  Marshal.load(File.read(File.join(@base_folder, fname))) if exists? query
end

#mtime(query) ⇒ Object



40
41
42
43
# File 'lib/zypper/onlinesearch/cache.rb', line 40

def mtime(query)
  fname = File.join(@base_folder, query_to_filename(query))
  File.mtime(fname) if File.exist? fname
end

#set(query, response) ⇒ Object



14
15
16
17
18
# File 'lib/zypper/onlinesearch/cache.rb', line 14

def set(query, response)
  File.open(File.join(@base_folder, query_to_filename(query)), 'w+') do |f|
    f.write Marshal.dump(response)
  end
end