skins.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. var logging = require("../logging");
  2. var helpers = require("../helpers");
  3. var skins = require("../skins");
  4. var path = require("path");
  5. var lwip = require("lwip");
  6. function handle_default(img_status, userId, def, err, callback) {
  7. if (def && def !== "steve" && def !== "alex") {
  8. callback({
  9. status: img_status,
  10. redirect: def,
  11. err: err
  12. });
  13. } else {
  14. def = def || skins.default_skin(userId);
  15. lwip.open(path.join(__dirname, "..", "public", "images", def + "_skin.png"), function(lwip_err, image) {
  16. if (image) {
  17. image.toBuffer("png", function(buf_err, buffer) {
  18. callback({
  19. status: img_status,
  20. body: buffer,
  21. type: "image/png",
  22. hash: def,
  23. err: buf_err || lwip_err || err
  24. });
  25. });
  26. } else {
  27. callback({
  28. status: -1,
  29. err: lwip_err || err
  30. });
  31. }
  32. });
  33. }
  34. }
  35. // GET skin request
  36. module.exports = function(req, callback) {
  37. var userId = (req.url.path_list[1] || "").split(".")[0];
  38. var def = req.url.query.default;
  39. var rid = req.id;
  40. if (!helpers.id_valid(userId)) {
  41. callback({
  42. status: -2,
  43. body: "Invalid userid"
  44. });
  45. return;
  46. }
  47. // strip dashes
  48. userId = userId.replace(/-/g, "");
  49. try {
  50. helpers.get_skin(rid, userId, function(err, hash, status, image) {
  51. if (image) {
  52. callback({
  53. status: status,
  54. body: image,
  55. type: "image/png",
  56. hash: hash,
  57. err: err
  58. });
  59. } else {
  60. handle_default(2, userId, def, err, callback);
  61. }
  62. });
  63. } catch(e) {
  64. logging.error(rid, "error:", e.stack);
  65. handle_default(-1, userId, def, e, callback);
  66. }
  67. };