HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/appointment.nailsbyrianne.nl/private_html/assets/js/utils/http.js
/* ----------------------------------------------------------------------------
 * Easy!Appointments - Online Appointment Scheduler
 *
 * @package     EasyAppointments
 * @author      A.Tselegidis <[email protected]>
 * @copyright   Copyright (c) Alex Tselegidis
 * @license     https://opensource.org/licenses/GPL-3.0 - GPLv3
 * @link        https://easyappointments.org
 * @since       v1.5.0
 * ---------------------------------------------------------------------------- */

/**
 * HTTP requests utility.
 *
 * This module implements the functionality of HTTP requests.
 */
window.App.Utils.Http = (function () {
    /**
     * Perform an HTTP request.
     *
     * @param {String} method
     * @param {String} url
     * @param {Object} data
     *
     * @return {Promise}
     */
    function request(method, url, data) {
        return new Promise((resolve, reject) => {
            fetch(App.Utils.Url.siteUrl(url), {
                method,
                mode: 'cors',
                credentials: 'same-origin',
                headers: {
                    'Content-Type': 'application/json',
                },
                redirect: 'follow',
                referrer: 'no-referrer',
                body: data ? JSON.stringify(data) : undefined,
            })
                .then((response) => {
                    if (!response.ok) {
                        response
                            .text()
                            .then((message) => {
                                const error = new Error(message);
                                error.status = response.status;
                                throw error;
                            })
                            .catch((error) => {
                                console.error(error);
                                reject(error);
                            });
                    }

                    return response;
                })
                .then((response) => {
                    return response.json();
                })
                .then((json) => {
                    resolve(json);
                })
                .catch((error) => {
                    console.error(error);
                    reject(error);
                });
        });
    }

    /**
     * Upload the provided file.
     *
     * @param {String} method
     * @param {String} url
     * @param {File} file
     *
     * @return {Promise}
     */
    function upload(method, url, file) {
        const formData = new FormData();

        formData.append('file', file, file.name);

        return new Promise((resolve, reject) => {
            fetch(App.Utils.Url.siteUrl(url), {
                method,
                redirect: 'follow',
                referrer: 'no-referrer',
                body: formData,
            })
                .then((response) => {
                    if (!response.ok) {
                        response
                            .text()
                            .then((message) => {
                                const error = new Error(message);
                                error.status = response.status;
                                throw error;
                            })
                            .catch((error) => {
                                console.error(error);
                                reject(error);
                            });
                    }

                    return response;
                })
                .then((response) => {
                    return response.json();
                })
                .then((json) => {
                    resolve(json);
                })
                .catch((error) => {
                    console.error(error);
                    reject(error);
                });
        });
    }

    /**
     * Download the requested URL.
     *
     * @param {String} method
     * @param {String} url
     *
     * @return {Promise}
     */
    function download(method, url) {
        return new Promise((resolve, reject) => {
            fetch(App.Utils.Url.siteUrl(url), {
                method,
                mode: 'cors',
                credentials: 'same-origin',
                headers: {
                    'Content-Type': 'application/json',
                },
                redirect: 'follow',
                referrer: 'no-referrer',
            })
                .then((response) => {
                    if (!response.ok) {
                        response
                            .text()
                            .then((message) => {
                                const error = new Error(message);
                                error.status = response.status;
                                throw error;
                            })
                            .catch((error) => {
                                console.error(error);
                                reject(error);
                            });
                    }

                    return response;
                })
                .then((response) => {
                    return response.arrayBuffer();
                })
                .then((json) => {
                    resolve(json);
                })
                .catch((error) => {
                    console.error(error);
                    reject(error);
                });
        });
    }

    return {
        request,
        upload,
        download,
    };
})();