networking.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. var request = require('request');
  2. var config = require('./config');
  3. var skins = require('./skins');
  4. var session_url = "https://sessionserver.mojang.com/session/minecraft/profile/";
  5. var exp = {};
  6. exp.get_profile = function(uuid, callback) {
  7. request.get({
  8. url: session_url + uuid,
  9. timeout: config.http_timeout // ms
  10. }, function (error, response, body) {
  11. if (!error && response.statusCode == 200) {
  12. callback(null, JSON.parse(body));
  13. } else {
  14. if (error) {
  15. callback(error, null);
  16. return;
  17. } else if (response.statusCode == 204 || response.statusCode == 404) {
  18. // we get 204 No Content when UUID doesn't exist (including 404 in case they change that)
  19. } else if (response.statusCode == 429) {
  20. // Too Many Requests
  21. console.warn("Too many requests for " + uuid);
  22. console.warn(body);
  23. } else {
  24. console.error("Unknown error:");
  25. console.error(response);
  26. console.error(body);
  27. }
  28. callback(null, null);
  29. }
  30. });
  31. };
  32. exp.skin_file = function(url, outname, callback) {
  33. request.get({
  34. url: url,
  35. encoding: null, // encoding must be null so we get a buffer
  36. timeout: config.http_timeout // ms
  37. }, function (error, response, body) {
  38. if (!error && response.statusCode == 200) {
  39. skins.extract_face(body, outname, function(err) {
  40. callback(err);
  41. });
  42. } else {
  43. if (error) {
  44. console.error("Error downloading '" + url + "': " + error);
  45. } else if (response.statusCode == 404) {
  46. console.warn("Texture not found: " + url);
  47. } else if (response.statusCode == 429) {
  48. // Too Many Requests
  49. // Never got this, seems like textures aren't limited
  50. console.warn("Too many requests for " + url);
  51. console.warn(body);
  52. } else {
  53. console.error("Unknown error:");
  54. console.error(response);
  55. console.error(body);
  56. }
  57. callback(null);
  58. }
  59. });
  60. };
  61. module.exports = exp;