use outdated hash on network errors, fixes #5 🍺

This commit is contained in:
jomo 2014-11-02 05:15:38 +01:00
parent 9e46878932
commit b513883d93
3 changed files with 23 additions and 24 deletions

View File

@ -1,6 +1,5 @@
var config = require("./config"); var config = require("./config");
var redis = require("redis").createClient(); var redis = require("redis").createClient();
var fs = require("fs");
var exp = {}; var exp = {};

View File

@ -2,7 +2,6 @@ var networking = require('./networking');
var config = require('./config'); var config = require('./config');
var cache = require('./cache'); var cache = require('./cache');
var skins = require('./skins'); var skins = require('./skins');
var fs = require('fs');
var valid_uuid = /^[0-9a-f]{32}$/; var valid_uuid = /^[0-9a-f]{32}$/;
var hash_pattern = /[0-9a-f]+$/; var hash_pattern = /[0-9a-f]+$/;
@ -88,7 +87,7 @@ function get_image_hash(uuid, callback) {
console.log("uuid not known or too old"); console.log("uuid not known or too old");
store_images(uuid, details, function(err, hash) { store_images(uuid, details, function(err, hash) {
if (err) { if (err) {
callback(err, -1, null); callback(err, -1, details && details.h);
} else { } else {
console.log("hash: " + hash); console.log("hash: " + hash);
callback(null, (hash ? 2 : 3), hash); callback(null, (hash ? 2 : 3), hash);
@ -114,22 +113,20 @@ exp.uuid_valid = function(uuid) {
exp.get_avatar = function(uuid, helm, size, callback) { exp.get_avatar = function(uuid, helm, size, callback) {
console.log("\nrequest: " + uuid); console.log("\nrequest: " + uuid);
get_image_hash(uuid, function(err, status, hash) { get_image_hash(uuid, function(err, status, hash) {
if (err) {
callback(err, -1, null);
} else {
if (hash) { if (hash) {
var filepath = (helm ? config.helms_dir : config.faces_dir) + hash + ".png"; var filepath = (helm ? config.helms_dir : config.faces_dir) + hash + ".png";
skins.resize_img(filepath, size, function(err, result) { skins.resize_img(filepath, size, function(img_err, result) {
if (err) { if (img_err) {
callback(err, -1, null); callback(img_err, -1, null);
} else { } else {
callback(null, status, result); // we might have a hash although an error occured
// (e.g. Mojang servers not reachable, using outdated hash)
callback(err, (err ? -1 : status), result);
} }
}); });
} else { } else {
// hash is null when uuid has no skin // hash is null when uuid has no skin
callback(null, status, null); callback(err, status, null);
}
} }
}); });

View File

@ -1,9 +1,7 @@
var networking = require('../modules/networking');
var helpers = require('../modules/helpers'); var helpers = require('../modules/helpers');
var router = require('express').Router(); var router = require('express').Router();
var config = require('../modules/config'); var config = require('../modules/config');
var skins = require('../modules/skins'); var skins = require('../modules/skins');
var fs = require('fs');
/* GET avatar request. */ /* GET avatar request. */
router.get('/:uuid', function(req, res) { router.get('/:uuid', function(req, res) {
@ -29,15 +27,20 @@ router.get('/:uuid', function(req, res) {
console.log(uuid + " - " + status); console.log(uuid + " - " + status);
if (err) { if (err) {
console.error(err); console.error(err);
if (image) {
console.warn("error occured, image found anyway");
sendimage(200, status, image);
} else {
handle_404(def); handle_404(def);
}
} else if (status == 1 || status == 2) { } else if (status == 1 || status == 2) {
sendimage(200, status == 1, image); sendimage(200, status == 1, image);
} else if (status == 3) { } else if (status == 3) {
handle_404(def); handle_404(def);
} else { } else {
console.error("wat"); console.error("unexpected error/status");
console.error(err); console.error("error: " + err);
console.error(status); console.error("status: " + status);
handle_404(def); handle_404(def);
} }
}); });