function makeArvadosRequest(arvHost, arvToken, endpoint, params={}) { const defaultParams = { 'method': 'GET', 'data': null, 'contentType': 'application/json;charset=utf-8', 'responseType': 'json', 'useSsl': true, 'requireToken': true }; Object.keys(defaultParams).map(k => (params[k] = (k in params ? params[k] : defaultParams[k]))); let { method, data, contentType, responseType, useSsl, requireToken } = params; if (!(arvHost && (arvToken || !requireToken))) return new Promise((accept, reject) => reject()); let xhr = new XMLHttpRequest(); xhr.open(method, (useSsl ? 'https://' : 'http://') + arvHost + endpoint); if (arvToken) xhr.setRequestHeader('Authorization', 'OAuth2 ' + arvToken); if (data !== null) xhr.setRequestHeader('Content-Type', contentType); xhr.responseType = responseType; let res = new Promise((accept, reject) => { xhr.onreadystatechange = () => { if (xhr.readyState !== 4) return; if (xhr.status !== 200) reject(xhr); else accept(xhr); }; xhr.send(data); }); return res; } export default makeArvadosRequest;