2
0

crafatar.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. var valid_user_id = /^[0-9a-f-A-F-]{32,36}$/; // uuid
  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_err = status["textures.minecraft.net"] !== "green";
  11. var session_err = status["sessionserver.mojang.com"] !== "green";
  12. if (textures_err || session_err) {
  13. var warn = document.createElement("div");
  14. warn.setAttribute("class", "alert alert-warning");
  15. warn.setAttribute("role", "alert");
  16. warn.innerHTML = "<h5>Mojang issues</h5> Mojang's servers are having trouble <i>right now</i>, this may affect requests at Crafatar. <small><a href=\"https://help.mojang.com\" target=\"_blank\">check status</a>";
  17. document.querySelector("#alerts").appendChild(warn);
  18. }
  19. };
  20. document.addEventListener("DOMContentLoaded", function(event) {
  21. var avatars = document.querySelector("#avatar-wrapper");
  22. for (var i = 0; i < avatars.children.length; i++) {
  23. // shake 'em on down!
  24. // https://stackoverflow.com/a/11972692/2517068
  25. avatars.appendChild(avatars.children[Math.random() * i | 0]);
  26. }
  27. var tryit = document.querySelector("#tryit");
  28. var tryname = document.querySelector("#tryname");
  29. var images = document.querySelectorAll(".tryit");
  30. tryit.onsubmit = function(e) {
  31. e.preventDefault();
  32. tryname.value = tryname.value.trim();
  33. var value = tryname.value || "853c80ef3c3749fdaa49938b674adae6";
  34. if (!valid_user_id.test(value)) {
  35. tryname.value = "";
  36. return;
  37. }
  38. for (var j = 0; j < images.length; j++) {
  39. images[j].src = images[j].dataset.src.replace("$", value);
  40. }
  41. };
  42. xhr.open("GET", "https://status.mojang.com/check", true);
  43. xhr.send();
  44. });