Source: plateform/main/getCTX.js

import { _httpCallAuthenticated } from "./3dexperience_api";

/**
 * @description La fonction `getAllContextSecurity` effectue une requête HTTP GET authentifiée pour récupérer toutes
 * les ressources de sécurité du contexte.
 * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier la demande.
 *  Il inclut généralement des propriétés telles qu'ici « space » et « tenant ».(ex: credentials.space, credentials.tenant).
 * @param {String} credentials.space - (3DSpace) L'URL du serveur sur lequel l'API est déployée.(3DSpace, 3DSwym, 3DCompass,...etc)
 * @example pour le 3DSpace {space:"https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia"}
 * @param {String} credentials.tenant - le tenant courant
 * @example {tenant:"R1132100968447"}
 * @param {Function} [onDone] - Une fonction de rappel qui sera appelée lorsque la requête HTTP sera terminée avec
 * succès. Il prend deux paramètres: "rep" (la réponse JSON analysée) et "headers" (les en-têtes de
 * réponse).
 * @param {Function} [onError] - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une
 * erreur lors de la requête HTTP. Il faut trois arguments : « réponse », « en-têtes » et « xhr ».
 * L'argument `response` contient le corps de la réponse d'erreur, l'argument `headers` contient les en-têtes de réponse,
 *
 */
export function getAllContextSecurity(
  credentials,
  onDone = undefined,
  onError = undefined,
) {
  const URL = {
    base: `${credentials.space}`,
    uri: "/resources/bps/cspaces",
    optTenant: `tenant=${credentials.tenant}`,
  };

  const url = `${URL.base}${URL.uri}?${URL.optTenant}`;

  _httpCallAuthenticated(url, {
    method: "GET",
    headers: {
      Accept: "application/json,text/javascript,*/*",
      "Content-Type": "application/ds-json",
    },
    onComplete(response, headers) {
      const rep = JSON.parse(response);

      if (onDone) onDone(rep, headers);
    },
    onFailure(response, headers, xhr) {
      if (onError) onError({ response, headers, xhr });
    },
  });
}