49 lines
1.2 KiB
Ruby
49 lines
1.2 KiB
Ruby
# -*- encoding: utf-8 -*-
|
|
|
|
module MusicBrainz
|
|
module Tools
|
|
class Cache
|
|
class << self
|
|
@@cache_path = nil
|
|
|
|
def cache_path=(path)
|
|
@@cache_path = path
|
|
end
|
|
|
|
def cache_path
|
|
@@cache_path
|
|
end
|
|
|
|
def clear_cache
|
|
FileUtils.rm_r(@@cache_path) if @@cache_path && File.exist?(@@cache_path)
|
|
end
|
|
|
|
def cache_contents(url)
|
|
response = nil
|
|
url_parts = url.split('/')
|
|
file_name = url_parts.pop
|
|
directory = url_parts.pop
|
|
file_path = @@cache_path ? "#{@@cache_path}/#{directory}/#{file_name}" : nil
|
|
|
|
if file_path && File.exist?(file_path)
|
|
response = File.open(file_path).gets
|
|
else
|
|
response = yield
|
|
|
|
unless response.nil? or file_path.nil?
|
|
FileUtils.mkdir_p file_path.split('/')[0..-2].join('/')
|
|
file = File.new(file_path, 'w')
|
|
file.puts(response.gets) # .force_encoding('UTF-8')
|
|
file.chmod(0755)
|
|
file.close
|
|
response.rewind
|
|
end
|
|
end
|
|
|
|
response
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|