mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-02 19:36:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const server = (function() {
 | 
						|
    function getHeaders() {
 | 
						|
        let protectedSessionId = null;
 | 
						|
 | 
						|
        try { // this is because protected session might not be declared in some cases - like when it's included in migration page
 | 
						|
            protectedSessionId = protected_session.getProtectedSessionId();
 | 
						|
        }
 | 
						|
        catch(e) {}
 | 
						|
 | 
						|
        return {
 | 
						|
            protected_session_id: protectedSessionId,
 | 
						|
            source_id: glob.sourceId
 | 
						|
        };
 | 
						|
    }
 | 
						|
 | 
						|
    async function get(url) {
 | 
						|
        return await call('GET', url);
 | 
						|
    }
 | 
						|
 | 
						|
    async function post(url, data) {
 | 
						|
        return await call('POST', url, data);
 | 
						|
    }
 | 
						|
 | 
						|
    async function put(url, data) {
 | 
						|
        return await call('PUT', url, data);
 | 
						|
    }
 | 
						|
 | 
						|
    async function remove(url) {
 | 
						|
        return await call('DELETE', url);
 | 
						|
    }
 | 
						|
 | 
						|
    let i = 1;
 | 
						|
    const reqResolves = {};
 | 
						|
 | 
						|
    async function call(method, url, data) {
 | 
						|
        if (isElectron()) {
 | 
						|
            const ipc = require('electron').ipcRenderer;
 | 
						|
            const requestId = i++;
 | 
						|
 | 
						|
            return new Promise((resolve, reject) => {
 | 
						|
                reqResolves[requestId] = resolve;
 | 
						|
 | 
						|
                console.log(now(), "Request #" + requestId + " to " + method + " " + url);
 | 
						|
 | 
						|
                ipc.send('server-request', {
 | 
						|
                    requestId: requestId,
 | 
						|
                    headers: getHeaders(),
 | 
						|
                    method: method,
 | 
						|
                    url: "/" + baseApiUrl + url,
 | 
						|
                    data: data
 | 
						|
                });
 | 
						|
            });
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            return await ajax(url, method, data);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    if (isElectron()) {
 | 
						|
        const ipc = require('electron').ipcRenderer;
 | 
						|
 | 
						|
        ipc.on('server-response', (event, arg) => {
 | 
						|
            console.log(now(), "Response #" + arg.requestId + ": " + arg.statusCode);
 | 
						|
 | 
						|
            reqResolves[arg.requestId](arg.body);
 | 
						|
 | 
						|
            delete reqResolves[arg.requestId];
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    async function ajax(url, method, data) {
 | 
						|
        const options = {
 | 
						|
            url: baseApiUrl + url,
 | 
						|
            type: method,
 | 
						|
            headers: getHeaders()
 | 
						|
        };
 | 
						|
 | 
						|
        if (data) {
 | 
						|
            options.data = JSON.stringify(data);
 | 
						|
            options.contentType = "application/json";
 | 
						|
        }
 | 
						|
 | 
						|
        return await $.ajax(options).catch(e => {
 | 
						|
            showError("Error when calling " + method + " " + url + ": " + e.status + " - " + e.statusText);
 | 
						|
 | 
						|
            throw e;
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    return {
 | 
						|
        get,
 | 
						|
        post,
 | 
						|
        put,
 | 
						|
        remove
 | 
						|
    }
 | 
						|
})(); |