Skip to content
Snippets Groups Projects
requests-to-domain.js 5.43 KiB
Newer Older
Elisa Giglio's avatar
Elisa Giglio committed
'use strict';
import {getToken} from "./script.js";
import Domain from "./domain.js";

Alfredo Chissotti's avatar
Alfredo Chissotti committed
import { getDomainURL } from './configuration.js';
Elisa Giglio's avatar
Elisa Giglio committed
class RequestToDomain {

    /**
    * Funzione per ottenenere dal domain manager tutte le informazioni
Elisa Giglio's avatar
Elisa Giglio committed
    * sui domini dell'utente che ha effettuato il login
    */
Alfredo Chissotti's avatar
Alfredo Chissotti committed
    static async getMyDomains() {
Elisa Giglio's avatar
Elisa Giglio committed
        const responseDomain = await fetch(`${getDomainURL()}secured/domains/`, {  
Elisa Giglio's avatar
Elisa Giglio committed
            headers: {
                'Authorization': `Bearer ${await getToken()}`
            }
Elisa Giglio's avatar
Elisa Giglio committed
        const domainsJson = await responseDomain.json();
        if(responseDomain.ok) {
Elisa Giglio's avatar
Elisa Giglio committed
            const domainsArray = domainsJson.response;
Alfredo Chissotti's avatar
Alfredo Chissotti committed
            const myDomains = domainsArray.map(d => {
                return Domain.from(d);
Elisa Giglio's avatar
Elisa Giglio committed
            });
            return myDomains;
Elisa Giglio's avatar
Elisa Giglio committed
        else
            throw domainsJson;
    }


    /**
     * Effettua la richiesta per creare un nuovo dominio.
Elisa Giglio's avatar
Elisa Giglio committed
     * @param {*} json descrizione json del dominio che si vuole creare.
     * @returns true se il dominio è stato creato,
Elisa Giglio's avatar
Elisa Giglio committed
     * false altrimenti.
Elisa Giglio's avatar
Elisa Giglio committed
     */
    static async createNewDomain(json) {
Alfredo Chissotti's avatar
Alfredo Chissotti committed
        const response = await fetch(`${getDomainURL()}install/`, {
Elisa Giglio's avatar
Elisa Giglio committed
            method: 'POST',
            headers: {
                'Authorization': `Bearer ${await getToken()}`
            },
            body: JSON.stringify(json)
        });
        if(response.ok) {
            return true;
        }
        else {
            return false;
        }
     * Effettua la richiesta al domain manager per ottenere tutti i sevizi
     * disponibili.
     */
    static async getAllServices() {
Elisa Giglio's avatar
Elisa Giglio committed
        const responseDomain = await fetch(`${getDomainURL()}secured/services`, {  
            headers: {
                'Authorization': `Bearer ${await getToken()}`
            }
        }) ;
Elisa Giglio's avatar
Elisa Giglio committed
        const servicesJson = await responseDomain.json();
        if(responseDomain.ok) {
            const servicesArray = servicesJson.response;
            return servicesArray;
Alfredo Chissotti's avatar
Alfredo Chissotti committed
    /**
     * Effettua la richiesta al domain manager per ottenere tutti i servizi in uso dal dominio
     * @param {*} domain
     * @returns
     */
     static async getUsedServices(domain) {
Alfredo Chissotti's avatar
Alfredo Chissotti committed
        const response = await fetch(`${getDomainURL()}secured/services?domain=${domain}`, {
Alfredo Chissotti's avatar
Alfredo Chissotti committed
            method: 'GET',
            headers: {
                'Authorization': `Bearer ${await getToken()}`
            }
        });
        const servicesJson = await response.json();//{response: ["servizio1", "servizio2"]};
        if(response.ok) {
            return servicesJson.response;
        }
        else
            throw servicesJson;
    }
Elisa Giglio's avatar
Elisa Giglio committed
    /**
     * Effettua la richiesta al domain manager per far partire un dominio.
     * @param {*} d dominio che si vuole far partire.
     * @returns true se il dominio è stato fatto partire,
Elisa Giglio's avatar
Elisa Giglio committed
     * false altrimenti.
     */
     static async startDomain(d) {
Alfredo Chissotti's avatar
Alfredo Chissotti committed
        const response = await fetch(`${getDomainURL()}start/`, {
Elisa Giglio's avatar
Elisa Giglio committed
            method: 'POST',
            headers: {
                'Authorization': `Bearer ${await getToken()}`
            },
            body: JSON.stringify({domain: d.nome})
        });
        if(response.ok) {
            return true;
        }
        else {
            return false;
        }
    }


    /**
     * Effettua la richiesta al domain manager per fermare un dominio.
     * @param {*} d dominio che si vuole fermare.
     * @returns true se il dominio è stato fermato,
Elisa Giglio's avatar
Elisa Giglio committed
     * false altrimenti.
     */
     static async stopDomain(d) {
Alfredo Chissotti's avatar
Alfredo Chissotti committed
        const response = await fetch(`${getDomainURL()}stop/`, {
Elisa Giglio's avatar
Elisa Giglio committed
            method: 'POST',
            headers: {
                'Authorization': `Bearer ${await getToken()}`
            },
            body: JSON.stringify({domain: d.nome})
        });
        if(response.ok) {
            return true;
        }
        else {
            return false;
        }
    }


    /**
     * Effettua la richiesta al domain manager per cancellare un dominio.
     * @param {*} d dominio che si vuole cancellare.
     * @returns true se la cancellazione è andata a buon fine,
Elisa Giglio's avatar
Elisa Giglio committed
     * false altrimenti.
     */
    static async deleteDomain(d) {
Alfredo Chissotti's avatar
Alfredo Chissotti committed
        const response = await fetch(`${getDomainURL()}delete/`, {
Elisa Giglio's avatar
Elisa Giglio committed
                        method: 'POST',
                        headers: {
                            'Authorization': `Bearer ${await getToken()}`
                        },
                        body: JSON.stringify({domain: d.nome})
                    });
        if(response.ok) {
            return true;
        }
        else {
            return false;
Alfredo Chissotti's avatar
Alfredo Chissotti committed
    /**
     * Effettua la richiesta al domain manager per sapere se l'utente e' un amministratore del dominio o meno
     * @param {*} domain
     * @returns
     */
    static async getUserPriviledges(domain) {
Alfredo Chissotti's avatar
Alfredo Chissotti committed
        const response = await fetch(`${getDomainURL()}secured/priviledges?domain=${domain}`, {
Alfredo Chissotti's avatar
Alfredo Chissotti committed
            method: 'GET',
            headers: {
                'Authorization': `Bearer ${await getToken()}`
            }
        });
        const privilegesJson = await response.json();// String response = "{\"priviledges\":\"admin\"}" || "{\"priviledges\":\"user\"}";
Alfredo Chissotti's avatar
Alfredo Chissotti committed
        if(response.ok) {
            return privilegesJson.priviledges;
Alfredo Chissotti's avatar
Alfredo Chissotti committed
        }
        else
            throw privilegesJson;
    }
Elisa Giglio's avatar
Elisa Giglio committed
}

Alfredo Chissotti's avatar
Alfredo Chissotti committed
export default RequestToDomain;