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