avatars.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. var express = require('express');
  2. var router = express.Router();
  3. var skins = require('../skins');
  4. var fs = require('fs');
  5. var valid_uuid = /^[0-9a-f]{32}$/;
  6. /* GET home page. */
  7. router.get('/:uuid/:size?', function(req, res) {
  8. var uuid = req.param('uuid');
  9. var size = req.param('size') || 180;
  10. // Prevent app from crashing/freezing
  11. if (size <= 0 || size > 512) size = 180;
  12. console.log(uuid);
  13. if (valid_uuid.test(uuid)) {
  14. var filename = uuid + ".png";
  15. if (fs.existsSync("skins/" + filename)) {
  16. skins.resize_img(filename, size, function(data) {
  17. res.writeHead(200, {'Content-Type': 'image/png'});
  18. res.end(data);
  19. });
  20. } else {
  21. skins.get_profile(uuid, function(profile) {
  22. var skinurl = skins.skin_url(profile);
  23. if (skinurl) {
  24. skins.skin_file(skinurl, filename, function() {
  25. skins.resize_img(filename, size, function(data) {
  26. res.writeHead(200, {'Content-Type': 'image/png'});
  27. res.end(data);
  28. });
  29. });
  30. } else {
  31. res.status(404) // HTTP status 404: NotFound
  32. .send('404 Not found');
  33. }
  34. });
  35. }
  36. } else {
  37. res.status(422) // "Unprocessable Entity", valid request, but semantically erroneous: https://tools.ietf.org/html/rfc4918#page-78
  38. .send("422 Invalid UUID");
  39. }
  40. });
  41. module.exports = router;