in src/parser/WDL/parse.js [59:112]
function getPreparedSubWDLs(opts) {
const { wdlArray, baseURI, imports } = opts;
const res = {};
let status = true;
let message = '';
if (wdlArray) {
wdlArray.forEach((item) => {
res[item.name] = item.wdl;
});
}
const promises = [];
_.forEach(imports.map(imp => imp.uri), (importUri) => {
if (!res[importUri]) {
if (importUri.indexOf('file://') === 0) {
message = 'Error resolving imports: "file://" protocol for imports is not supported';
status = false;
return false;
}
if (importUri.indexOf('http://') === 0 || importUri.indexOf('https://') === 0) {
promises.push(DataService.get(`${importUri}`).then(data => ({ importUri, data })));
return true;
}
if (!baseURI) {
status = false;
message = 'Error resolving imports: No baseURI presented';
return false;
}
promises.push(DataService.get(baseURI.endsWith('/') ? `${baseURI}${importUri}` : `${baseURI}/${importUri}`)
.then(data => ({ importUri, data })));
}
return true;
});
return new Promise((resolve) => {
Promise.all(promises).then((response) => {
_.forEach(response, (source) => {
res[source.importUri] = source.data;
});
resolve({ status, res, message });
}).catch(() => {
status = false;
resolve({ status, res, message });
});
});
}