/*
  But : Communiquer avec les différents serveurs
  Auteur : Maxime Commergnat
  Date :   20.06.2021 / V1.0 
*/
class Service {
  constructor() {}

  centraliserErreurHttp(httpErrorCallbackFn) {
    $.ajaxSetup({
      error: function (xhr, exception) {
        let msg;
        if (xhr.status === 0) {
          msg = "Pas d'accès à la ressource serveur demandée !";
        } else if (xhr.status === 404) {
          msg = "Page demandée non trouvée [404] !";
        } else if (xhr.status === 500) {
          msg = "Erreur interne sur le serveur [500] !";
        } else if (exception === "parsererror") {
          msg = "Erreur de parcours dans le JSON !";
        } else if (exception === "timeout") {
          msg = "Erreur de délai dépassé [Time out] !";
        } else if (exception === "abort") {
          msg = "Requête Ajax stoppée !";
        } else {
          msg = "Erreur inconnue : \n" + xhr.responseText;
        }
        httpErrorCallbackFn(msg);
      },
    });
  }

  login(identifiant, successCallback) {
    let url = "php/login_POST.php";
    let param =
      "username=" + identifiant.username + "&password=" + identifiant.password;
    // envoi de la requête
    $.ajax(url, {
      type: "POST",
      contentType: "application/x-www-form-urlencoded; charset=UTF-8",
      data: param,
      success: successCallback,
    });
  }

  chercherAnime(urlImage, successCallback) {
    let api = "https://api.trace.moe/search";
    let params = {
      anilistInfo: true,
      url: urlImage,
    };

    $.ajax(api, {
      type: "GET",
      data: params,
      success: successCallback,
    });
  }

  chargerVue(vue, callback) {
    // charger la vue demandee
    $("#view").load("views/" + vue + ".html", function () {
      // si une fonction de callback est spécifiée, on l'appelle ici
      if (typeof callback !== "undefined") {
        callback();
      }
    });
  }
}
