| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | var config = require("./config");var redis = null;var fs = require("fs");// sets up redis connection, calls clear_cachefunction connect_redis() {  console.log("connecting to redis...");  if (process.env.REDISCLOUD_URL) {    var redisURL = require("url").parse(process.env.REDISCLOUD_URL);    redis = require("redis").createClient(redisURL.port, redisURL.hostname);    redis.auth(redisURL.auth.split(":")[1]);  } else {    redis = require("redis").createClient();  }  redis.on("ready", function() {    console.log("Redis connection established.");    clear_cache();  });  redis.on("error", function (err) {    console.error(err);  });  redis.on("end", function () {    console.warn("Redis connection lost!");  });}// flushes redis, deletes faces + helmsfunction clear_cache() {  console.log("Flushing redis");  redis.flushall();  console.log("Deleting all faces + helms...");  fs.readdir(config.faces_dir, function(err, files) {    if (err) {      console.error(err);    } else {      for (var i in files) {        var file = files[i];        if (file[0] != ".") {          // delete face file          fs.unlink(config.faces_dir + file, function(err){            if (err) {              console.error(err);            }          });          // delete helm file, we assume this exists as well          fs.unlink(config.helms_dir + file, function(err){            if (err) {              console.error(err);            }          });        }      }    }  });}// sets the date of the face file belonging to +hash+ to now// the helms file is ignored because we only need 1 file to read/write fromfunction update_file_date(hash) {  if (hash) {    var path = config.faces_dir + hash + ".png";    fs.exists(path, function(exists) {      if (exists) {        var date = new Date();        fs.utimes(path, date, date, function(err){          if (err) {            console.error(err);          }        });      } else {        console.error("Tried to update " + path + " date, but it doesn't exist");      }    });  }}var exp = {};exp.get_redis = function() {  return redis;};// sets the timestamp for +uuid+ and its face file's date to nowexp.update_timestamp = function(uuid, hash) {  console.log(uuid + " cache: updating timestamp");  var time = new Date().getTime();  redis.hmset(uuid, "t", time);  update_file_date(hash);};// create the key +uuid+, store +hash+ and timeexp.save_hash = function(uuid, hash) {  console.log(uuid + " cache: saving hash");  var time = new Date().getTime();  redis.hmset(uuid, "h", hash, "t", time);};// get a details object for +uuid+// {hash: "0123456789abcdef", time: 1414881524512}// null when uuid unkownexp.get_details = function(uuid, callback) {  redis.hgetall(uuid, function(err, data) {    var details = null;    if (data) {      details = {        hash: (data.h == "null" ? null : data.h),        time: Number(data.t)      };    }    callback(err, details);  });};connect_redis();module.exports = exp;
 |