crafatar.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. var valid_user_id = /^([0-9a-f-A-F-]{32,36}|[a-zA-Z0-9_]{1,16})$/; // uuid|username
  2. var xhr = new XMLHttpRequest();
  3. xhr.onload = function() {
  4. var response = JSON.parse(xhr.responseText);
  5. var status = {};
  6. response.map(function(elem) {
  7. var key = Object.keys(elem)[0];
  8. status[key] = elem[key];
  9. });
  10. var textures = status["textures.minecraft.net"] !== "green";
  11. var session = status["sessionserver.mojang.com"] !== "green";
  12. var skins = status["skins.minecraft.net"] !== "green";
  13. var error = null;
  14. if (textures || session && skins) {
  15. error = "all";
  16. } else if (skins) {
  17. error = "username";
  18. } else if (session) {
  19. error = "UUID";
  20. }
  21. if (error) {
  22. var warn = document.createElement("div");
  23. warn.setAttribute("class", "alert alert-warning");
  24. warn.setAttribute("role", "alert");
  25. warn.innerHTML = "<h5>Mojang issues</h5> Mojang's servers are having trouble <i>right now</i>, this may affect <b>" + error + "</b> requests at Crafatar. <small><a href=\"https://help.mojang.com\" target=\"_blank\">check status</a>";
  26. document.querySelector("#alerts").appendChild(warn);
  27. }
  28. };
  29. document.addEventListener("DOMContentLoaded", function(event) {
  30. var avatars = document.querySelector("#avatar-wrapper");
  31. for (var i = 0; i < avatars.children.length; i++) {
  32. // shake 'em on down!
  33. // https://stackoverflow.com/a/11972692/2517068
  34. avatars.appendChild(avatars.children[Math.random() * i | 0]);
  35. }
  36. var tryit = document.querySelector("#tryit");
  37. var tryname = document.querySelector("#tryname");
  38. var images = document.querySelectorAll(".tryit");
  39. tryit.onsubmit = function(e) {
  40. e.preventDefault();
  41. tryname.value = tryname.value.trim();
  42. var value = tryname.value || "853c80ef3c3749fdaa49938b674adae6";
  43. if (!valid_user_id.test(value)) {
  44. tryname.value = "";
  45. return;
  46. }
  47. for (var j = 0; j < images.length; j++) {
  48. images[j].src = images[j].dataset.src.replace("$", value);
  49. }
  50. };
  51. xhr.open("GET", "https://status.mojang.com/check", true);
  52. xhr.send();
  53. });