class Ficon::Cache

Public Class Methods

db_file() click to toggle source
# File lib/ficon/cache.rb, line 54
def self.db_file
  if ENV['FICON_DB'].nil?
    File.expand_path('~/.ficon.db')
  else
    ENV['FICON_DB']
  end
end
new(url) click to toggle source
# File lib/ficon/cache.rb, line 7
def initialize(url)
  @url = url.to_s
  Cache.setup_cache(db) if db.execute( "SELECT name FROM sqlite_master WHERE type='table' AND name='urls'" ).length == 0
end
setup_cache(db) click to toggle source
# File lib/ficon/cache.rb, line 62
def self.setup_cache(db)
  db.execute("CREATE TABLE urls(url, etag, not_before, data)")
  db.execute("CREATE UNIQUE INDEX `url` ON `urls` (`url`)")
end

Public Instance Methods

data() click to toggle source
# File lib/ficon/cache.rb, line 18
def data
  JSON.parse db.execute( "select data from urls where url=?limit 1", @url ).first&.first
rescue
  return nil
end
data=(_value) click to toggle source
# File lib/ficon/cache.rb, line 24
def data=(_value)
  value = _value.to_json
  db.execute("INSERT OR IGNORE INTO urls (url, data) VALUES (?, ?)", [@url, value])
  db.execute("UPDATE urls SET data=? WHERE url=?", [value, @url])
end
db() click to toggle source
# File lib/ficon/cache.rb, line 12
def db
  _db = SQLite3::Database.new Cache.db_file
  _db.busy_timeout=1000
  return _db
end
etag() click to toggle source
# File lib/ficon/cache.rb, line 30
def etag
  JSON.parse db.execute( "select etag from urls where url=?limit 1", @url ).first&.first
rescue 
  return nil
end
etag=(_value) click to toggle source
# File lib/ficon/cache.rb, line 36
def etag=(_value)
  value = _value.to_json
  db.execute("INSERT OR IGNORE INTO urls (url, etag) VALUES (?, ?)", [@url, value])
  db.execute("UPDATE urls SET etag=? WHERE url=?", [value, @url])
end
not_before() click to toggle source
# File lib/ficon/cache.rb, line 42
def not_before
  JSON.parse db.execute( "select not_before from urls where url=?limit 1", @url ).first&.first
rescue 
  return nil
end
not_before=(_value) click to toggle source
# File lib/ficon/cache.rb, line 48
def not_before=(_value)
  value = _value.to_json
  db.execute("INSERT OR IGNORE INTO urls (url, not_before) VALUES (?, ?)", [@url, value])
  db.execute("UPDATE urls SET not_before=? WHERE url=?", [value, @url])
end